Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 定义移动平均的窗口功能框架_Sql_Postgresql_Amazon Redshift_Window Functions - Fatal编程技术网

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

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

我正试图用一个窗口函数创建一个移动平均线。我想把前7天的计数加起来。我有一列表示日期,一列表示小时,每个日期-小时行都有一个计数

例如,对于8/18,我想对前面所有行(8/11到8/17)的计数求和。这有点棘手,因为每个日期都是按小时展开的。然后,所有8/18行将具有与前7天相同的总和值

我尝试用红移中的组或范围来定义一个框架,但它似乎只喜欢行

到目前为止,我所做的只是对同一日期组的计数求和。我如何调整这一点,或者是否有其他方法

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中的关键字。避免将它们用作标识符。