按星期几(或日期减 7)的 SQL 滚动平均值

标签 sql sql-server sql-server-2008-r2

我有一个查询可以提取数据并将其分组到:

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/

相关文章:

c# - 错误必须使用表值参数声明标量变量

sql - 如何获取SQL Server中sql表中没有一列的所有列名

sql-server-2008-r2 - 为什么要构建 SSAS Cube?

SQL查询选择等于或小于或大于

mysql - 'DELIMITER' 附近的 SQL 语法错误

sql - 是否可以按行组合进行分组?

sql-server - SQL Server 在组合键上自动递增

sql - 更新语句与 ASP.NET MVC4 中的 FOREIGN KEY 约束冲突

sql - 用于终止与数据库的所有连接的脚本(超过 RESTRICTED_USER ROLLBACK)

sql - OO程序和SQL数据库