は大丈夫ですが、1管理者のためのより簡単なクエリは動作します:
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