我正在练习SQL,我想在3分钟内添加一列来累积值:
Time Data Cumulative
8:00 1 1
8:01 2 3
8:02 3 6
8:03 2 7
8:04 1 6
8:04 1 4
到目前为止我写了这个SQL:
SELECT EX.E3TimeStamp,EX.Data,EX.Data AS Sum
FROM EX
ORDER BY EX.E3TimeStamp ASC
但我很难找到解决方案。我尝试使用GROUP BY和DATEDIFF但是不成功(错误)。
请你给我一些提示!
答案 0 :(得分:0)
一种通用方法使用相关子查询。处理时间的函数因数据库而异,但想法是:
select t.*,
(select sum(t2.data)
from t t2
where t2.time >= t.time - interval '3 minute' and
t2.time <= t.time
) as cumulative
from t;
注意:这使用ANSI标准interval
语法进行时间计算。这可能因数据库而异。
编辑:
SQL Server版本是:
select t.*,
(select sum(t2.data)
from t t2
where t2.time >= dateadd(minute, -3, t.time) and
t2.time <= t.time
) as cumulative
from t;