Oracle SQL 累积产品

Oracle SQL Cumulative Product

我有一个有点类似的问题:MySQL cumulative product group by 但我无法获得适合我的情况的建议解决方案。

我有 5 个月的百分比变化值,我想将其应用于静态值。我希望所有月份的结果值都是累积的。

Report_Month PCT_Change Initial_Value
8/1/2021 0.1202 0.88
9/1/2021 -.0426
10/1/2021 -0.0794
11/1/2021 0.0726
12/1/2021 0.1182

如果我在 Excel 中进行计算,输出将如下所示:

Report_Month PCT_Change Value
8/1/2021 0.1202 0.985776
9/1/2021 -.0426 0.943781942
10/1/2021 -0.0794 0.868845656
11/1/2021 0.0726 0.931923851
12/1/2021 0.1182 1.04207725

但是,当我使用 exp(sum(ln(x))) 方法时,我得到的并不是这样。这是使用 exp(sum(ln(0.88*(1+pct_change))) over (order by report_month)).

的输出
Report_Month PCT_Change Value
8/1/2021 0.1202 0.9857
9/1/2021 -.0426 0.8305
10/1/2021 -0.0794 0.6728
11/1/2021 0.0726 0.6351
12/1/2021 0.1182 0.6249

如有任何帮助,我们将不胜感激。

谢谢, 克里斯

Initial_Value的值必须乘以SUM()window函数的结果,所以正确的表达式是:

0.88 * EXP(SUM(LN((1 + pct_change))) OVER (ORDER BY report_month))

参见demo