Amazon redshift 以红移方式滚动N个月平均值,每个月有多个条目

Amazon redshift 以红移方式滚动N个月平均值,每个月有多个条目,amazon-redshift,partitioning,rolling-average,Amazon Redshift,Partitioning,Rolling Average,我想使用Redshift的窗口聚合函数来创建一些数据的“N”个月滚动平均值。每个给定的月份,数据将有多个唯一的条目。如果可能的话,我希望避免在执行滚动平均之前的几个月内进行第一次分组和平均,因为这是平均值的平均值,并不理想(正如本文所述:) 这是一个仅包含一个帐户的示例数据集(将有多个帐户) 这就是我希望3个月滚动平均值的结果(例如) 我尝试过的代码如下所示: avg(Value) over (partition by Account order by Quote Date rows betwe

我想使用Redshift的窗口聚合函数来创建一些数据的“N”个月滚动平均值。每个给定的月份,数据将有多个唯一的条目。如果可能的话,我希望避免在执行滚动平均之前的几个月内进行第一次分组和平均,因为这是平均值的平均值,并不理想(正如本文所述:)

这是一个仅包含一个帐户的示例数据集(将有多个帐户)

这就是我希望3个月滚动平均值的结果(例如)

我尝试过的代码如下所示:

avg(Value) over (partition by Account order by Quote Date rows between 2 preceding and current row)


但是,这只对最后2行(包括当前行)起作用,如果我每个月有一个唯一的值,这将起作用,但如上所述,情况并非如此。我对任何排序解决方案或嵌套分区都持开放态度。非常感谢您的帮助。

因为平均值就是sum()/count(),所以您只需按月分组,即可得到sum()和count()。然后用你的滞后时间求3个月的总和,再除以3个月的计数总和。你是对的,平均值的平均值是不正确的,但是如果你进行总和和计数,事情就会发生。

因为平均值就是总和()/count(),你只需要按月份分组,但得到总和()和计数()。然后用你的滞后时间求3个月的总和,再除以3个月的计数总和。你是对的,平均数的平均数是不正确的,但如果你计算总和和计数,事情就会发生。

这是一个如此简单、直截了当的答案,我不敢相信我自己没有想到。谢谢你的快速回复。这是一个如此简单、直截了当的回答,我不敢相信我自己没有想到。谢谢你的迅速回复。
Quote_Date      Account.   Value  Month 3M_Rolling_Average
3/24/2015       acme.       3        1       3
3/25/2015       acme.       7        1       5
4/1/2015        acme.       12       2       7.33
4/3/2015        acme.       17       2       9.75
5/15/2015       acme.       1        3       8
6/30/2015       acme.       3        4       8.25
7/30/2015       acme.       9        5       4.33
avg(Value) over (partition by Account order by Quote Date rows between 2 preceding and current row)