定义移动平均线的窗口功能框

问题描述

我正在尝试使用窗口函数创建移动平均线。我希望将过去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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...