我有一个查询可以提取数据并将其分组到:
Date Type Total
3/1/2016 Sales 9
3/1/2016 Support 8
3/1/2016 Service 5
3/1/2016 Other 48
3/2/2016 Sales 42
3/2/2016 Support 86
3/2/2016 Service 67
3/2/2016 Other 25
3/2/2016 VIP 12
3/3/2016 Sales 46
3/3/2016 Support 45
3/3/2016 Service 78
3/3/2016 Other 70
3/3/2016 VIP 26
我也想包括滚动平均值。因此,对于 2016 年 3 月 1 日的销售额,滚动平均值将是前 10 个星期二的平均值。本质上:
select average(Total) where Date in ('2/23/2016','2/16/2016','2/9/2016','2/2/2016','1/26/2016','1/19/2016','1/12/2016','1/5/2016','12/29/2015','12/22/2015') and Type = "Sales"
有没有一种方法可以在 1 个查询中高效地执行此操作?
最佳答案
使用这样的东西:
SELECT AVG(tbl.Total)
FROM tbl
WHERE DATEPART(WEEKDAY, tbl.[Date]) = 3 AND tbl.[Date] > DATEADD(DAY, -7 * 10, GETDATE())
AND tbl.[Type] = 'Sales'
GROUP BY DATEPART(WEEKDAY, tbl.[Date])
关于按星期几(或日期减 7)的 SQL 滚动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066920/