[퀴즈] 계층구조 쿼리의 이해
scott.emp 테이블을 이용해 다음 결과를 출력하는 쿼리를 작성하세요.
1. mgr 컬럼을 통해 사원을 계층적으로 표현
2. ename 항목을 계층 레벨에 따라 두칸씩 들여쓰기
3. ename 항목을 '-' 구분자로 계층 순서대로 나열
4. 급여(sal) 항목에 대해 계층구조의 하위항목에 대한 누적합계를 구함
EMPNO |
LV |
ENAME |
FULL_ENAMES |
SAL |
SUM_SAL |
계산예시 |
7839 |
1 |
KING | KING | 5000 | 29025 | 5000+10875+9400+3750 |
7566 |
2 |
JONES | KING-JONES | 2975 | 10875 | 2975+4100+3800 |
7788 |
3 |
SCOTT | KING-JONES-SCOTT | 3000 | 4100 | 3000+1100 |
7876 |
4 |
ADAMS | KING-JONES-SCOTT-ADAMS | 1100 | 1100 | 1100 |
7902 |
3 |
FORD | KING-JONES-FORD | 3000 | 3800 | 3000+800 |
7369 |
4 |
SMITH | KING-JONES-FORD-SMITH | 800 | 800 | 800 |
7698 |
2 |
BLAKE | KING-BLAKE | 2850 | 9400 | |
7499 |
3 |
ALLEN | KING-BLAKE-ALLEN | 1600 | 1600 | |
7521 |
3 |
WARD | KING-BLAKE-WARD | 1250 | 1250 | |
7654 |
3 |
MARTIN | KING-BLAKE-MARTIN | 1250 | 1250 | |
7844 |
3 |
TURNER | KING-BLAKE-TURNER | 1500 | 1500 | |
7900 |
3 |
JAMES | KING-BLAKE-JAMES | 950 | 950 | |
7782 |
2 |
CLARK | KING-CLARK | 2450 | 3750 | |
7934 |
3 |
MILLER | KING-CLARK-MILLER | 1300 | 1300 |
[정답보기] <== 트리플클릭
SELECT empno
, LEVEL lv
, RPAD(' ', LEVEL*2-2) || ename ename
, LTRIM(SYS_CONNECT_BY_PATH(ename,'-'),'-') full_enames
, sal
, (SELECT SUM(sal)
FROM scott.emp
START WITH empno = a.empno
CONNECT BY PRIOR empno = mgr
) sum_sal
FROM scott.emp a
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr
;