ben (ürün kullanıldığında kaç kez) verilerin saatlik ürün kullanımının bir tablo var - Aynı şekildeSQL sorgusu SQL Server 7 Gün Rolling Ortalama için
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
, ben 4 farklı ürünler için kullanım verileri var (1 den 4 e kadar ProductId) product_usage tablosunda her saat için saklanır. Tahmin edebileceğiniz gibi, gece ETL süreci bir önceki güne ait verileri döküldüğünde sürekli büyüyor. Bir ürün günün herhangi bir saatinde kullanılmazsa, bu saatteki kayıt bu tabloda görünmez. Benzer şekilde, bir ürün tüm gün boyunca kullanılmazsa, o gün için tabloda herhangi bir kayıt olmaz.
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
Ve böylece .. Ben SQL server 2014 yılı Endeksli görünümü oluşturmak planlıyorum: Örneğin
- Ben günlük kullanım ve son 7 gün haddeleme ortalamasını veren bir rapor oluşturmak gerekiyor Bunu yapmak için etkili bir SQL sorgusu düşünebilir misiniz?
"Yuvarlama ortalaması" dediğiniz şey gerçekten bir toplam. –