@ SERG的解决方案是好的,但对于一个经理更简单的查询工作:
select 21 as id, sum(salary) as summed
from employees e
start with emp_id = 21
connect by prior emp_id = manager_id;
如果你不这样做然后把经理的工资加到where level<>1
。
测试数据:
create table employees(emp_id number(4), name varchar2(10),
salary number(6), manager_id number(4));
insert into employees values ( 1, 'King', 10000, null);
insert into employees values ( 11, 'Smith', 8000, 1);
insert into employees values ( 21, 'Jones', 9000, 1);
insert into employees values (211, 'Brown', 7500, 21);
insert into employees values (212, 'Adams', 6200, 21);
insert into employees values (2111, 'White', 5000, 211);
输出:
ID SUMMED
------ ----------
21 27700
你用什么数据库? – verhie
'connect by prior'向oracle表示 – Nebi