Sql 在层次结构的下一个子级别进行求和的查询
我的oracle数据库中有两个表:Sql 在层次结构的下一个子级别进行求和的查询,sql,oracle,sum,hierarchical-data,Sql,Oracle,Sum,Hierarchical Data,我的oracle数据库中有两个表: 人物: IdPerson-PK 姓氏 惰轮导轮 收益: IdEarning-主键 Iderson 赚取价值 有一个层次结构:每个人都有一个领导者,当然许多人可以有同一个领导者。领导是桌子上的一个人。有些人的领袖也可以有他的领袖等等。。这就是层次结构。 我正在尝试进行一个将返回两列的查询: -个人Id -该行id为领导的人员的所有收入总和 重要的是,我只需要这个领导的直接下属的收入之和。因此,如果有一个领导者的人同时也是另一组人的领导者,那么我只需要对第一级层次
人物:
IdPerson-PK
姓氏
惰轮导轮
收益:
IdEarning-主键
Iderson
赚取价值
有一个层次结构:每个人都有一个领导者,当然许多人可以有同一个领导者。领导是桌子上的一个人。有些人的领袖也可以有他的领袖等等。。这就是层次结构。
我正在尝试进行一个将返回两列的查询:
-个人Id
-该行id为领导的人员的所有收入总和
重要的是,我只需要这个领导的直接下属的收入之和。因此,如果有一个领导者的人同时也是另一组人的领导者,那么我只需要对第一级层次结构求和。
现在,我有一个查询,可以进行一些求和,但是求和计算错误,我不知道为什么
SELECT LEVEL , People.IdPerson, SUM (EarningValue)
FROM People JOIN Earnings
ON
Earnings.IdPerson=People.IdPerson
START WITH IdLeader IS NULL
CONNECT BY PRIOR People.IdPerson= IdLeader
GROUP BY LEVEL, People.IdPerson;
此查询有什么问题?如何正确求和?根据您的描述,您不需要分层查询。只要做:
select p.idleader, sum(earningvalue) as earningvalue
from person p join
earnings e
on e.idperson = p.idperson
group by p.idleader;
似乎工作正常。非常感谢。我试图用过于复杂的查询来获得过于简单的结果。但是,如果我还需要计算层级中所有下一个孩子级别的人的收入之和呢?因此,对于最高级别,它将是所有下一个级别的总和levels@user2838197 . . . 这将是一个不同的问题,应该作为一个问题而不是评论来提问。我还建议您在一个新问题中包括示例数据、期望的结果,甚至一个SQL FIDLE。我还检查了所有手动计算的结果,我认为您的查询工作正常。