24 時間にわたる ProductCountの移動平均を(SQL Server 2008 を使用して) 効率的に計算しようとしています。Product テーブルのすべての行について、過去 24 時間の (その特定の製品の) ProductCount の平均を知りたいです。データの問題の 1 つは、すべての日付/時間が存在するわけではないことです (以下の例を参照)。TimeStamp がない場合は、ProductCount が 0 だったことを意味します。
日付、製品、およびカウントを含む数百万または行のテーブルがあります。以下は、私が扱わなければならないデータの簡単な例です。
それを達成する方法について何か考えはありますか?
編集: 私が必要とするもう 1 つのデータは、期間 (つまり 24 時間) の MIN および MAX ProductCount です。MIN/MAX の計算は、値が欠落しているため、少し複雑です...
+---------------------+-------------+--------------+
| Date | ProductName | ProductCount |
+---------------------+-------------+--------------+
| 2012-01-01 00:00:00 | Banana | 15000 |
| 2012-01-01 01:00:00 | Banana | 16000 |
| 2012-01-01 02:00:00 | Banana | 17000 |
| 2012-01-01 05:00:00 | Banana | 12000 |
| 2012-01-01 00:00:00 | Apple | 5000 |
| 2012-01-01 05:00:00 | Apple | 6000 |
+---------------------+-------------+--------------+
SQL
CREATE TABLE ProductInventory (
[Date] DATETIME,
[ProductName] NVARCHAR(50),
[ProductCount] INT
)
INSERT INTO ProductInventory VALUES ('2012-01-01 00:00:00', 'Banana', 15000)
INSERT INTO ProductInventory VALUES ('2012-01-01 01:00:00', 'Banana', 16000)
INSERT INTO ProductInventory VALUES ('2012-01-01 02:00:00', 'Banana', 17000)
INSERT INTO ProductInventory VALUES ('2012-01-01 05:00:00', 'Banana', 12000)
INSERT INTO ProductInventory VALUES ('2012-01-01 00:00:00', 'Apple', 5000)
INSERT INTO ProductInventory VALUES ('2012-01-01 05:00:00', 'Apple', 6000)