Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Vertica(?)中创建嵌套/循环计算_Sql_Vertica - Fatal编程技术网

Sql 在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个周期变

所以,也许我只是想得太多了,但有没有办法用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没有(还没有?)带有递归的
子句,您在这里似乎需要递归计算

唯一可能的解决方法是冗长乏味的:编写(或生成,例如,使用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团队拿到票时回来(