我每小时的产品使用的表(多少次产品使用)的数据 -SQL查询7天滚动平均值在SQL Server
ID (bigint)| ProductId (tinyint)| Date (int - YYYYMMDD) | Hour (tinyint)| UsageCount (int)
#|1 | 20140901 | 0 | 10
#|1 | 20140901 | 1 | 15
#|1 | 20140902 | 5 | 25
#|1 | 20140903 | 5 | 25
#|1 | 20140904 | 3 | 25
#|1 | 20140905 | 7 | 25
#|1 | 20140906 | 10 | 25
#|1 | 20140907 | 9 | 25
#|1 | 20140908 | 5 | 25
#|2 | 20140903 | 16 | 10
#|2 | 20140903 | 13 | 115
同样,我有4级不同的产品使用数据(ProductId从1到4)每小时存储在product_usage表中。正如您可以想象的那样,随着夜间ETL过程转储整个前一天的数据,它不断增长。如果一天中的任何时间都没有使用产品,则该表格中不会显示该小时的记录。同样,如果一整天没有使用产品,表中当天就不会有任何记录。我需要生成一个报告,让日常使用和过去7天滚动平均值 -
例如:
ProductId | Date | DailyUsage | RollingAverage
1 | 20140901 | sum of usages of that day | (Sum of usages from 20140901 through 20140826)/7
1 | 20140901 | sum of usages of that day | (Sum of usages from 20140901 through 20140826)/7
1 | 20140902 | sum of usages of that day | (Sum of usages from 20140902 through 20140827)/7
2 | 20140902 | sum of usages of that day | (Sum of usages from 20140902 through 20140827)/7
等等.. 我计划在SQL服务器2014年创建索引视图。你能想到一个高效的SQL查询来做到这一点吗?
你称之为“滚动平均值”实际上是一个总和。 – 2014-09-18 22:10:00