在SQL Server 2008中按时间跨度分组

Nik*_*Nik 0 sql sql-server-2008

我有这个表结构:

ID BIGINT IDENTITY(1,1)
deviceID BIGINT NOT NULL,
entryTime DATETIME2 NOT NULL,
value FLOAT,
PRIMARY KEY (ID),
UNIQUE KEY (deviceID, entryTime)
Run Code Online (Sandbox Code Playgroud)

我在这个表中有大约1500万行,我想用这个表中的聚合数据填充另一个表.我想将这些数据分组deviceID为一天大小的"桶",并获取当天值的最小值,最大值和平均值.知道我是怎么做到的吗?

Lam*_*mak 6

就像是:

SELECT CONVERT(DATE,entryTime) [Date],
       deviceId,
       MIN(Value) MinValue,
       MAX(Value) MaxValue,
       AVG(Value) AvgValue
FROM YourTable
GROUP BY CONVERT(DATE,entryTime),
         deviceId
Run Code Online (Sandbox Code Playgroud)