SQL-Abfrage für den 7-Tage-Durchschnitt in SQL Server

Ich habe eine Tabelle der stündlichen Produktnutzung (wie oft das Produkt verwendet wird). Daten -

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

Ebenso habe ich die Nutzungsdaten für 4 verschiedene Produkte (ProductId von 1 bis 4) für jede Stunde in der product_usage-Tabelle gespeichert. Wie Sie sich vorstellen können, nimmt sie stetig zu, da der nächtliche ETL-Prozess die Daten für den gesamten Vortag speichert. Wenn ein Produkt zu keiner Tageszeit verwendet wird, wird der Datensatz für diese Stunde nicht in dieser Tabelle angezeigt. Wenn ein Produkt nicht den ganzen Tag verwendet wird, ist für diesen Tag kein Datensatz in der Tabelle vorhanden. Ich muss einen Bericht erstellen, der die tägliche Nutzung und den gleitenden Durchschnitt der letzten 7 Tage angibt -

Beispielsweise

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

Und so weiter .. Ich plane, eine indizierte Ansicht in SQL Server 2014 zu erstellen. Können Sie sich eine effiziente SQL-Abfrage vorstellen, um dies zu tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage