我的oracle数据库中有两个表:
People:
IdPerson-PK
姓
IdLeader
收入:
IdEarning-PK
IdPerson
EarningValue
有一个等级:每个人都有一个领导者,当然很多人可以有一个相同的领导者。领导者是表中的一员。有些人的领导者也可以有他的领导者,依此类推。
我正在尝试进行一个查询,该查询将返回两列:
-人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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句