Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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 在层次结构的下一个子级别进行求和的查询_Sql_Oracle_Sum_Hierarchical Data - Fatal编程技术网

Sql 在层次结构的下一个子级别进行求和的查询

Sql 在层次结构的下一个子级别进行求和的查询,sql,oracle,sum,hierarchical-data,Sql,Oracle,Sum,Hierarchical Data,我的oracle数据库中有两个表: 人物: IdPerson-PK 姓氏 惰轮导轮 收益: IdEarning-主键 Iderson 赚取价值 有一个层次结构:每个人都有一个领导者,当然许多人可以有同一个领导者。领导是桌子上的一个人。有些人的领袖也可以有他的领袖等等。。这就是层次结构。 我正在尝试进行一个将返回两列的查询: -个人Id -该行id为领导的人员的所有收入总和 重要的是,我只需要这个领导的直接下属的收入之和。因此,如果有一个领导者的人同时也是另一组人的领导者,那么我只需要对第一级层次

我的oracle数据库中有两个表:
人物:
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。我还检查了所有手动计算的结果,我认为您的查询工作正常。