我試圖在24小時內有效計算(使用SQL Server 2008)ProductCount的moving average。對於產品表中的每一行,我都想知道過去24小時內ProductCount的平均值(針對特定產品)。我們的數據存在的一個問題是,並非所有日期/時間都存在(請參閱下面的示例)。如果時間戳丟失,這意味着ProductCount爲0.如何計算過去n小時的移動平均數
我有一個包含數百萬行或日期,產品和計數的表格。以下是我必須處理的一個簡單數據示例。
關於如何實現這一點的任何想法?
編輯:我需要的另一個數據是MIN和MAX ProductCount在這段時間(即24小時)。計算最小/最大是有點棘手,因爲缺失值...
+---------------------+-------------+--------------+
| 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)
哇橘子!這令人印象深刻......我不知道外部適用?我如何在最後24小時添加MIN和MAX?我認爲試圖計算MIN/MAX有點棘手,因爲缺少值。例如,如果有一個缺失值,MIN == 0。 – Martin