我正在尝试有效地计算(使用 SQL Server 2008)ProductCount 在 24 小时内的移动平均值。对于 Product 表中的每一行,我想知道过去 24 小时内 ProductCount 的平均值(对于给定的产品)是多少。我们数据的一个问题是并非所有日期/时间都存在(参见下面的示例)。如果缺少 TimeStamp,则意味着 ProductCount 为 0。
我有一个包含数百万行的表,其中包含日期、产品和计数。下面是我必须处理的数据的简化示例。
关于如何实现的任何想法?
编辑:我需要的另一条数据是该期间(即 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)