oracle下的递归节点求和,一个关于oracle 递归求和的问题,sql问题!
with table1 as ( select 'A' as parent_no, 'B' as no from dual union all select 'A' as parent_no, 'C' as no from dual union all select 'B' as parent_no, 'D' as no from dual union all select 'C' as parent_no, 'E' as no from dual union all select 'A' as parent_no, 'F' as no from dual union all select 'C' as parent_no, 'G' as no from dual union all select 'G' as parent_no, 'H' as no from dual),table2 as ( select 'A' AS NO,1 AS no_level from dual union all select 'B' AS NO,NULL AS no_level from dual union all select 'C' AS NO,2 AS no_level from dual union all select 'D' AS NO,null AS no_level from dual union all select 'E' AS NO,null AS no_level from dual union all select 'F' AS NO,1 AS no_level from dual union all select 'G' AS NO,2 AS no_level from dual union all select 'H' AS NO,null AS no_level from dual),table3 as ( select 'A' as no,100 as money from dual union all select 'B' as no,200 as money from dual union all select 'C' as no,300 as money from dual union all select 'D' as no,400 as money from dual union all select 'E' as no,500 as money from dual union all select 'F' as no,600 as money from dual union all select 'G' as no,700 as money from dual union all select 'H' as no,800 as money from dual )
用户关系图:

有如上3张表,table1表示用户之间的关系,table2表示用户的等级,table3表示用户的钱。
需求:现在要根据这个关系,统计出每个用户的money,如果下级用户有等级,则就不再往下统计
比如:A用户只能统计B,D,这2个用户的money,且不算A本身的money。因为A的下级C和F都有等级,所以C和F以及这2个用户以下的会员都不统计。所以A的结果应该是 600 。
最终需要的结果:
用户,等级,钱
A 1 600
B 400
C 2 1300
D 0
E 0
F 1 0
G 2 800
H 0
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)