第三列累积值超过3分钟

时间:2017-10-13 10:31:55

标签: sql sql-server

我正在练习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但是不成功(错误)。

请你给我一些提示!

1 个答案:

答案 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;