我有这个表结构:
ID BIGINT IDENTITY(1,1)
deviceID BIGINT NOT NULL,
entryTime DATETIME2 NOT NULL,
value FLOAT,
PRIMARY KEY (ID),
UNIQUE KEY (deviceID, entryTime)
我在这个表中有大约1500万行,我想用这个表中的聚合数据填充另一个表。我希望将deviceID
的数据分组到一天大小的“桶”中,并获取当天值的最小值,最大值和平均值。知道我是怎么做的吗?
答案 0 :(得分:6)
类似的东西:
SELECT CONVERT(DATE,entryTime) [Date],
deviceId,
MIN(Value) MinValue,
MAX(Value) MaxValue,
AVG(Value) AvgValue
FROM YourTable
GROUP BY CONVERT(DATE,entryTime),
deviceId
答案 1 :(得分:1)
您可以使用转换(DATE,entryTime)作为select和group by子句,但是如果您想按更具体或更不具体的时间段进行分组,则可以使用以下内容:
INSERT INTO NEW_TABLE (deviceID, entryTime, min, max, avg)
SELECT deviceID,
DATEPART(yy, entryTime)+DATEPART(mm, entryTime)+DATEPART(dd, entryTime),
MAX(value),
MIN(value),
AVG(value)
FROM OLD_TABLE
GROUP BY
deviceId,
DATEPART(yy, entryTime)+DATEPART(mm, entryTime)+DATEPART(dd, entryTime)