如何创建一个列,该列给出 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分钟内的秒数(嗯,减一,因为包括当前行)。
我正在尝试对时间戳在任何给定行的时间戳之前 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分钟内的秒数(嗯,减一,因为包括当前行)。