Sql 定义移动平均的窗口功能框架
我正试图用一个窗口函数创建一个移动平均线。我想把前7天的计数加起来。我有一列表示日期,一列表示小时,每个日期-小时行都有一个计数 例如,对于8/18,我想对前面所有行(8/11到8/17)的计数求和。这有点棘手,因为每个日期都是按小时展开的。然后,所有8/18行将具有与前7天相同的总和值 我尝试用红移中的组或范围来定义一个框架,但它似乎只喜欢行 到目前为止,我所做的只是对同一日期组的计数求和。我如何调整这一点,或者是否有其他方法Sql 定义移动平均的窗口功能框架,sql,postgresql,amazon-redshift,window-functions,Sql,Postgresql,Amazon Redshift,Window Functions,我正试图用一个窗口函数创建一个移动平均线。我想把前7天的计数加起来。我有一列表示日期,一列表示小时,每个日期-小时行都有一个计数 例如,对于8/18,我想对前面所有行(8/11到8/17)的计数求和。这有点棘手,因为每个日期都是按小时展开的。然后,所有8/18行将具有与前7天相同的总和值 我尝试用红移中的组或范围来定义一个框架,但它似乎只喜欢行 到目前为止,我所做的只是对同一日期组的计数求和。我如何调整这一点,或者是否有其他方法 sum(count) over (partition by dat
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)
较小的值必须是下限。你可以从日期中减去整数。答案可能与格式有关。完成后,我准备向上投票。你实际上不需要减去任何东西<代码>之前的“7天”和之前的“1天”之间的范围应足够大,有意义。我相应地编辑了回答。从v11开始工作。您使用的是哪个版本?PostgreSQL 8.0:(注意
date
hour
和count
都是Postgres SQL中的关键字。避免将它们用作标识符。