sql - 基于前几行的 SQL 复合增长计算(变化率)
问题描述
给定一个“增长因素”列和一个起始值,我需要计算未来值。例如,如果提供的起始值为 1,则计算的“值”列将如下所示。因此,Value(t2) = Value(t1) x Growth_Factor(t2)。基本条件是 Value(t1) = Starting_Value x Growth_Factor(t1)。示例如下所示。 如何在计算值取决于先前计算值的 SQL(或 Presto)中计算它?
生长因子 | 价值 | 时间 |
---|---|---|
1.2 | 1.2 | 1 |
1.1 | 1.32 | 2 |
1.5 | 1.98 | 3 |
1.7 | 3.366 | 4 |
解决方案
您可以对数求和并在完成后反转。除了一些小浮点错误的可能性之外,这将起作用。但是,一旦在每次迭代中将多个小数位加倍的数字相乘,您也会引入错误。
exp(
sum(ln(growth)) over (order by time)
)
推荐阅读
- java - 如何创建一个 ImmutableList 作为成员变量?
- reactjs - 尝试运行命令“npm start”时出错
- r - 具有向量条件的行总和
- c# - C 和 Arduino 中的有趣除法
- python - Python中os.environ的Shell等效性?
- python - 如果我有 Python3.4 中的代码并且我安装了最新的 Python3,我是否能够强制 IDLE 使用特定版本
- python - Python:从具有权重但不重复的列表中采样 N 个随机项目
- javascript - 使用 Javascript 对具有多个数字条目的表进行排序
- selenium - Perfecto Quantum Starter 模板 - 运行单个功能会导致“gherkin.parser.ParseError”
- javascript - 如何使用 jQuery 让每个按钮闪烁?