在snowflakeSQL中,我有一个包含通胀因素的表,按年计算,如下所示:
Year | Inflation |
---|---|
2000 | 1.1 % |
2001 | 1.3 % |
2002 | -1.3 % |
2003 | 2.3 % |
我想制作一张表,列出从2000年起每年的总通货inflating 率
谢谢!
有一个古老的、类似的问题here,但我想不出该如何改编
**更新**
我try 了建议的解决方案,但不起作用:
在snowflakeSQL中,我有一个包含通胀因素的表,按年计算,如下所示:
Year | Inflation |
---|---|
2000 | 1.1 % |
2001 | 1.3 % |
2002 | -1.3 % |
2003 | 2.3 % |
我想制作一张表,列出从2000年起每年的总通货inflating 率
谢谢!
有一个古老的、类似的问题here,但我想不出该如何改编
**更新**
我try 了建议的解决方案,但不起作用:
您可以使用SQL Window Function和一些算术技巧来实现这一点.简而言之,将SUM()、LOG()和EXP()函数组合在一起就可以得到您想要的结果.
这个 idea 背后的算术诀窍是 A X B=exp(log(exp(1),A)+log(exp(1),B))
我们使用基于窗口的sum()函数来计算到X年的累积对数(通货inflating 率)值,然后应用exp()来获得原始的累积通货inflating 率.
请参见以下代码作为示例(在snowflakeSQL语法中,在代码中使用特定于snowflake的ln()函数):
select
record_year,
inflation_rate,
round(exp(SUM(ln(1+inflation_rate)) OVER (ORDER BY record_year)) -1,3) as cum_inflation_rate
FROM inflation_data
VERIFIED RUNNING EXAMPLE SQLFIDDLE LINK个
输出示例:
record_year | inflation_rate | cum_inflation_rate |
---|---|---|
2000 | 0.011 | 0.011 |
2001 | 0.013 | 0.024 |
2002 | -0.013 | 0.011 |
2003 | 0.023 | 0.034 |