如下:
SQL> with t as
2 ( select 100 userid, 0 parentid, 90 amount from dual
3 union all
4 select 110, 100, 80 from dual
5 union all
6 select 120, 110, 70 from dual
7 union all
8 select 130, 120, 60 from dual
9 union all
10 select 200, 0, 50 from dual
11 union all
12 select 210, 200, 40 from dual
13 union all
14 select 220, 210, 30 from dual
15 )
16 select userid,
17 sum(amount) amount
18 from
19 (select CONNECT_BY_ROOT(userid) userid,
20 amount
21 from t
22 where level <> 1
23 connect by prior userid = parentid)
24 group by userid
25 order by 1;
USERID AMOUNT
---------- ----------
100 210
110 130
120 60
200 70
210 30
SQL>