加权分层累积和

问题描述 投票:0回答:1

我不知道我使用的术语是否正确,但我试图找到树结构中每个节点的累积和,但子节点仅将其累积和的一定百分比贡献给其父节点的累积和总和。

Emission(E1) = Emission(E1)

Emission(E2) = Emission(E2) + percent_Contribution(E1) * Emission(E1)

Emissions(E3) = Emission(E3) + percent_Contribution(E2) * Emission(E2)

这就是我想要达到的结果:

实体ID 家长ID 排放量 贡献百分比 累计金额
E1 E2 10 80 10
E2 E3 20 80 20 + (10 * 80 / 100) = 28
E3 30 30 + (28 * 80 / 100) = 52.4

我不熟悉 SQL,但我的研究告诉我应该纠正递归 CTE,但我无法让它与加权值一起工作。如果不可能用纯 SQL 来完成,我也希望能指出正确的方向。

sql mysql hierarchical-data cumulative-sum
1个回答
0
投票

原始排序的解决方案

WITH RECURSIVE
cte AS (
  SELECT 2 as Nextid, entityId, parentId, emission, percentContribution,  emission as cumulativeSum
  FROM Emissions WHERE entityId='E3'  
  UNION ALL
  SELECT Nextid - 1, e.entityId, e.parentId, e.emission, e.percentContribution,  e.emission + (c.cumulativeSum * c.percentContribution /100) 
  FROM cte c
  INNER JOIN Emissions e ON e.entityId=CONCAT('E',c.Nextid) 
  WHERE c.Nextid > 0 
)
SELECT * FROM cte ORDER BY Nextid;
© www.soinside.com 2019 - 2024. All rights reserved.