Sql 在Vertica(?)中创建嵌套/循环计算
所以,也许我只是想得太多了,但有没有办法用SQL语法在Vertica中复制嵌套/循环计算呢 解释- 在AP列中,我有一个属性键每月的剩余值,在CHANGE_1M列中,我有一个要应用的属性值 目标是让未来值计算前面的行分区AP*CHANGE_1M,由后面的行分区CHANGE_1M填充未来的AP值 作为参考,我在完整的数据集中有15000个周期和60个周期 样本计算 第5期= (第4个会计年度*第5个会计年度变动)+第4个会计年度 第6期= ((第4个周期*第5个周期变动)+第4个周期*第6个周期变动) + ((第4个会计年度*第5个会计年度变动)+第4个会计年度) ect 顶部的示例数据 预期结果如下 Vertica没有(还没有?)带有递归的Sql 在Vertica(?)中创建嵌套/循环计算,sql,vertica,Sql,Vertica,所以,也许我只是想得太多了,但有没有办法用SQL语法在Vertica中复制嵌套/循环计算呢 解释- 在AP列中,我有一个属性键每月的剩余值,在CHANGE_1M列中,我有一个要应用的属性值 目标是让未来值计算前面的行分区AP*CHANGE_1M,由后面的行分区CHANGE_1M填充未来的AP值 作为参考,我在完整的数据集中有15000个周期和60个周期 样本计算 第5期= (第4个会计年度*第5个会计年度变动)+第4个会计年度 第6期= ((第4个周期*第5个周期变动)+第4个周期*第6个周期变
子句,您在这里似乎需要递归计算
唯一可能的解决方法是冗长乏味的:编写(或生成,例如,使用perl或Python)您需要迭代的尽可能多的嵌套查询
如果你想沿着这条路走下去,我只想详细说明一下。好久不见了-我应该早点回来回答这个问题
我一直在思考解决这个问题的编程方法,我天生就忘了它是一个数学方程,在有数学函数的地方就有解
基本上,这个问题围绕着做表乘法
解决方案是简单地使用LOG/LN函数,使用EXP进行乘法和转换
简单求解的一段代码
希望这有助于其他迷失的灵魂,不要忘记你的数学背景,陷入自我挫败的漩涡
EXP(总和(LN(递减))超过(按期间的顺序\u编号ASC行无限制前)作为递减率
**由哪些因素/属性控制您需要使用分区分层的数据
基本上不是从保留PX/P0开始,而是回到降解P1/P0-P2/P1 ect
周期号
堕落
脱脂率
脱脂率×100000
0
100.00%
100.00%
100000
1.
57.72%
57.72%
57715.18
2.
60.71%
35.04%
35036.59
3.
70.84%
24.82%
24820.66
4.
76.59%
19.01%
19009.17
5.
79.29%
15.07%
15071.79
6.
83.27%
12.55%
12550.59
7.
82.08%
10.30%
10301.94
8.
86.49%
8.91%
8910.59
9
89.60%
7.98%
7984.24
10
86.03%
6.87%
6868.79
11
86.00%
5.91%
5907.16
12
90.52%
5.35%
5347
13
91.89%
4.91%
4913.46
14
89.86%
4.41%
4414.99
15
91.96%
4.06%
4060.22
16
89.36%
3.63%
3628.28
17
90.63%
3.29%
3288.13
18
92.45%
3.04%
3039.97
19
94.95%
2.89%
2886.43
20
92.31%
2.66%
2664.40
21
92.11%
2.45%
2454.05
22
93.94%
2.31%
2305.32
23
89.66%
2.07%
2066.84
24
94.12%
1.95%
1945.26
25
95.83%
1.86%
1864.21
26
92.31%
1.72%
1720.81
27
96.97%
1.67%
1668.66
28
90.32%
1.51%
1507.18
29
90.00%
1.36%
1356.46
30
94.44%
1.28%
1281.10
31
94.12%
1.21%
1205.74
32
100.00%
1.21%
1205.74
33
90.91%
1.10%
1096.13
34
90.00%
0.99%
986.52
35
94.44%
0.93%
931.71
36
100.00%
0.93%
931.71
编辑您的问题并提供示例数据和所需结果。减少行数可能也会有所帮助。此外,对计算进行清楚的解释也会有所帮助。如果您有一个简单的句点计数器来枚举行,这也会有所帮助。@GordonLinoff会根据请求进行更新~谢谢你的意见,几个月前我解决了这个问题,但忘了跟进。谢谢,我就是这么想的。我制定了一个长期的路径,将数据传递给我的DW团队,然后通过python运行递归计算,并在ETL期间将其传递给我。(我希望我可以避免,因为我不能用任何脚本以自动方式向DW写入数据。)我可能在6个月后DW团队拿到票时回来(