SQL 按星期几查询平均值
SQL Query Average by Day of Week
我正在尝试设计一个查询,该查询将告诉我在给定工作日完成的平均程序数以及整个时间范围内该工作日的程序总数。我开发的查询看起来有效,但值加起来不正确。
SELECT [Day], COUNT(*) AS "Week Day Count", AVG(Totals) AS [Avg]
FROM
(
SELECT
w = DATEDIFF(WEEK, 0, CompleteDate),
[Day] = DATENAME(WEEKDAY, CompleteDate),
Totals = COUNT(*)
FROM dbo.[order]
WHERE CompleteDate Between '2015-01-01' AND '2016-04-22'
AND PlacerFld2 IN ('CT','SAMR')
AND OrderStatusID = '2'
GROUP BY
DATEDIFF(WEEK, 0, CompleteDate),
DATENAME(WEEKDAY, CompleteDate),
DATEPART(WEEKDAY, CompleteDate)
) AS q
GROUP BY [Day]
ORDER BY [Day];
我觉得平均结果是正确的,但是,"Week Day Count" 并没有像我想象的那样高,也许这就是我计算它的方式。
当我将工作日计数中的值相加时,结果大约是 365,但是当我执行下面的查询时,我得到大约 1750:
SELECT COUNT(*) AS "Total 2015-2016"
FROM [order]
WHERE CompleteDate Between '2015-01-01' AND '2016-04-22'
AND PlacerFld2 IN ('CT','SAMR')
AND OrderStatusID = '2'
我怀疑你真的想要总数的 sum:
SUM(Totals) AS "Week Day Count"
您的查询是(我认为)计算每个工作日数据中的天数。
我正在尝试设计一个查询,该查询将告诉我在给定工作日完成的平均程序数以及整个时间范围内该工作日的程序总数。我开发的查询看起来有效,但值加起来不正确。
SELECT [Day], COUNT(*) AS "Week Day Count", AVG(Totals) AS [Avg]
FROM
(
SELECT
w = DATEDIFF(WEEK, 0, CompleteDate),
[Day] = DATENAME(WEEKDAY, CompleteDate),
Totals = COUNT(*)
FROM dbo.[order]
WHERE CompleteDate Between '2015-01-01' AND '2016-04-22'
AND PlacerFld2 IN ('CT','SAMR')
AND OrderStatusID = '2'
GROUP BY
DATEDIFF(WEEK, 0, CompleteDate),
DATENAME(WEEKDAY, CompleteDate),
DATEPART(WEEKDAY, CompleteDate)
) AS q
GROUP BY [Day]
ORDER BY [Day];
我觉得平均结果是正确的,但是,"Week Day Count" 并没有像我想象的那样高,也许这就是我计算它的方式。
当我将工作日计数中的值相加时,结果大约是 365,但是当我执行下面的查询时,我得到大约 1750:
SELECT COUNT(*) AS "Total 2015-2016"
FROM [order]
WHERE CompleteDate Between '2015-01-01' AND '2016-04-22'
AND PlacerFld2 IN ('CT','SAMR')
AND OrderStatusID = '2'
我怀疑你真的想要总数的 sum:
SUM(Totals) AS "Week Day Count"
您的查询是(我认为)计算每个工作日数据中的天数。