我有这样的疑问:
DECLARE @NUM AS INT --IT INDICATE THE NUMBER OF SECONDS TO GROUP THE DATA
DECLARE @DATA_START AS DATETIME = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)
DECLARE @DATA_END AS DATETIME = GETDATE()
SELECT AVG(D.VALORE)
FROM AA_V_DATI_MISURAZIONE D
WHERE D.STARTDATE >= @DATA_START AND D.ENDDATE <= @DATA_END
现在我需要每 @NUM 秒增加“D.Valore”组的平均值。
编辑 所以这是我的查询:
SELECT dateadd(day,
datediff(SECOND, @DATA_START , D.DataOra) / @NUM,
@DATA_START) as DATAORA,
AVG(D.Valore) AS MEDIAVALORE
FROM AA_V_DatiMisurazione D
WHERE D.STARTDATE >= @DATA_START AND D.STARTDATE <= @DATA_END
GROUP BY datediff(SECOND, @DATA_START , D.DataOra) / @NUM
ORDER BY DATAORA
DATE_BUCKET
(假设您使用的是最新版本的 SQL Server,但您并没有说不是):
SELECT DATE_BUCKET(SECOND, @NUM, STARTDATE) AS Second_Bucket,
AVG(D.VALORE) AS AvgValore
FROM AA_V_DATI_MISURAZIONE D
WHERE D.STARTDATE >= @DATA_START AND D.ENDDATE <= @DATA_END
GROUP BY DATE_BUCKET(SECOND, @NUM, STARTDATE);