Tôi có một bảng của việc sử dụng sản phẩm theo giờ (bao nhiêu lần so với sản phẩm được sử dụng) dữ liệu -SQL Query trong vòng 7 ngày cán trung bình trong 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
Tương tự như vậy, tôi có dữ liệu sử dụng cho 4 sản phẩm khác nhau (ProductId từ 1 đến 4) được lưu trữ cho mỗi giờ trong bảng product_usage. Như bạn có thể tưởng tượng, nó không ngừng phát triển khi quy trình ETL hàng đêm đổ dữ liệu cho toàn bộ ngày hôm trước. Nếu một sản phẩm không được sử dụng vào bất kỳ giờ nào trong ngày, thì bản ghi cho giờ đó sẽ không xuất hiện trong bảng này. Tương tự, nếu sản phẩm không được sử dụng cho cả ngày, sẽ không có bất kỳ bản ghi nào cho ngày đó trong bảng. Tôi cần phải tạo ra một báo cáo cung cấp cho sử dụng hàng ngày và kéo dài trung bình cán 7 ngày -
Ví dụ:
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
Và vân vân .. Tôi đang lên kế hoạch để tạo ra một chỉ mục Xem trong SQL server 2014 Bạn có thể nghĩ ra một truy vấn SQL hiệu quả để làm điều này không?
Những gì bạn đang gọi là "trung bình cán" thực sự là một khoản tiền. –