ich eine Tabelle mit stündlicher Produktnutzung habe (wie oft das Produkt verwendet wird) Daten -SQL Query für 7 Tage gleitenden Mittelwert in 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
Ebenso habe ich die Nutzungsdaten für 4 verschiedene Produkte (ProductId von 1 bis 4) für jede Stunde in der Tabelle product_usage gespeichert. Wie Sie sich vorstellen können, wächst es ständig, da der nächtliche ETL-Prozess die Daten für den gesamten vorherigen Tag ablegt. Wenn ein Produkt zu keiner Stunde eines Tages verwendet wird, wird der Datensatz für diese Stunde nicht in dieser Tabelle angezeigt. Wenn ein Produkt nicht für den gesamten Tag verwendet wird, wird in diesem Fall kein Datensatz für diesen Tag in der Tabelle angezeigt. Ich brauche einen Bericht zu erstellen, die die täglichen Gebrauch und letzten 7 Tage gleitenden Durchschnitt gibt -
Zum Beispiel:
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 Sicht in SQL Server 2014 erstellen Können Sie sich eine effiziente SQL-Abfrage dazu vorstellen?
Was Sie einen "rollenden Durchschnitt" nennen, ist wirklich eine Summe. –