问题描述
我正在尝试使用窗口函数创建移动平均线。我希望将过去7天的计数加起来。我有一列用于日期,一列用于小时,并且每个日期都有一个计数-小时行。
例如,对于8/18,我想对所有先前行(8/11至8/17)的计数求和。鉴于每个日期都是按小时散开的,所以这有点棘手。然后,所有8/18行的前7天总和值将相同。
我尝试在redshift中使用组或范围定义帧,但似乎只喜欢行。
到目前为止,我所获得的只是将具有相同日期的组的总数相加。我该如何调整?还是有其他方法?
sum(count) over (partition by date)
date hour count last7day
2020-08-11 0 1
2020-08-11 1 5
2020-08-11 2 8
.
.
.
2020-08-11 23 4
.
.
.
2020-08-17 23 7
2020-08-18 0. sum of all rows from 2020-08-11 hour 0 through 2020-08-17 hour 23
2020-08-18 1
2020-08-18 2
解决方法
您可以尝试一下。
如果直到1天之前的日期都需要滚动平均值-
Sum(count) OVER (order by date RANGE BETWEEN '7 days' PRECEDING AND '1 day' PRECEDING)
如果直到前一行的日期都需要滚动平均值-
Sum(count) OVER (order by date RANGE BETWEEN '7 days' PRECEDING AND 1 PRECEDING)