如何创建一个列,该列给出 DB2 SQL 中给定行时间戳前 5 分钟内所有行的总和?

How do I create a column that gives the sum of all rows within 5 minutes previous of a given rows timestamp in DB2 SQL?

我正在尝试对时间戳在任何给定行的时间戳之前 5 分钟内的行求和。我遇到的问题是,在之前的 5 分钟内没有预定义的行数,并且从初始时间戳开始计算 5 分钟的间隔不会给出预期的结果。

下面的 table 显示了所需的输出:

时间戳 销售额 SUM_PREVIOUS_5_MINS_SALES
18:04:03 2 2
18:05:23 5 7
18:05:58 3 10
18:09:34 4 12

一种方法使用 window 函数:

select t.*,
       sum(sales) over (order by extract(epoch from timestamp)
                        range between 299 preceding and current row
                       ) as sales_prev_5_minutes
from t;

注意:299 = 5 * 60 - 1,即5分钟内的秒数(嗯,减一,因为包括当前行)。