我想使用 Redshift 的窗口聚合函数来创建一些数据的“N”个月滚动平均值。每个给定月份的数据将有多个唯一条目。如果可能的话,我想避免在执行滚动平均之前的几个月内首先进行分组和平均,因为这是取平均值而不是理想的平均值(正如这篇文章所做的那样:3 Month Moving Average - Redshift SQL)。
这是一个只有一个帐户的示例数据集(会有多个)。
Quote Date Account. Value
3/24/2015 acme. 3
3/25/2015 acme. 7
4/1/2015 acme. 12
4/3/2015 acme. 17
5/15/2015 acme. 1
6/30/2015 acme. 3
7/30/2015 acme. 9
这就是我希望 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)
但是,这只对最后两行(包括当前行)有效,如果我每个月都有一个唯一值,但如前所述,情况并非如此。我对任何类型的排名解决方案或嵌套分区持开放态度。任何帮助是极大的赞赏。