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        )

用户关系图:

16030718126d9e178dd4b2ffc2.png

有如上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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐