[SQL] 091. 계층형 질의문으로 서열을 주고 데이터 출력하기3
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[기본 옵션]
-- AUTOCOMMIT 끄기
SET AUTOCOMMIT OFF;
-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';
[예시]
ORDER SIBLINGS BY
를 사용하여 서열 순서는 유지하면서 데이터를 정렬해보자.
-- 옵션 적용 전
SELECT RPAD('-', LEVEL*2, '-') || ENAME AS EMPLOYEE, LEVEL, DEPTNO, MGR, SAL
FROM EMP
START WITH ENAME = 'KING'
CONNECT BY PRIOR EMPNO = MGR
ORDER SIBLINGS BY SAL DESC;
[옵션 적용 전 결과]
EMPLOYEE | LEVEL | DEPTNO | MGR | SAL |
---|---|---|---|---|
–KING | 1 | 10 | 5000 | |
—-JONES | 2 | 20 | 7839 | 2975 |
——SCOTT | 3 | 20 | 7566 | 3000 |
——–ADAMS | 4 | 20 | 7788 | 1100 |
——FORD | 3 | 20 | 7566 | 3000 |
——–SMITH | 4 | 20 | 7902 | 800 |
—-BLAKE | 2 | 30 | 7839 | 2850 |
——ALLEN | 3 | 30 | 7698 | 1600 |
——WARD | 3 | 30 | 7698 | 1250 |
——MARTIN | 3 | 30 | 7698 | 1250 |
——TURNER | 3 | 30 | 7698 | 1500 |
——JAMES | 3 | 30 | 7698 | 950 |
—-CLARK | 2 | 10 | 7839 | 2450 |
——MILLER | 3 | 10 | 7782 | 1300 |
-- 옵션 적용 후
-- ORDER SIBLINGS BY: 서열은 유지 하면서 정렬하기
SELECT RPAD('-', LEVEL*2, '-') || ENAME AS EMPLOYEE, LEVEL, DEPTNO, MGR, SAL
FROM EMP
START WITH ENAME = 'KING'
CONNECT BY PRIOR EMPNO = MGR
ORDER SIBLINGS BY SAL DESC;
[옵션 적용 후 결과]
옵션 적용 후 BLAKE 밑에 레벨 3 직원들의 순서가 바뀌었다.
EMPLOYEE | LEVEL | DEPTNO | MGR | SAL |
---|---|---|---|---|
–KING | 1 | 10 | 5000 | |
—-JONES | 2 | 20 | 7839 | 2975 |
——SCOTT | 3 | 20 | 7566 | 3000 |
——–ADAMS | 4 | 20 | 7788 | 1100 |
——FORD | 3 | 20 | 7566 | 3000 |
——–SMITH | 4 | 20 | 7902 | 800 |
—-BLAKE | 2 | 30 | 7839 | 2850 |
——ALLEN | 3 | 30 | 7698 | 1600 |
——TURNER | 3 | 30 | 7698 | 1500 |
——WARD | 3 | 30 | 7698 | 1250 |
——MARTIN | 3 | 30 | 7698 | 1250 |
——JAMES | 3 | 30 | 7698 | 950 |
—-CLARK | 2 | 10 | 7839 | 2450 |
——MILLER | 3 | 10 | 7782 | 1300 |
Leave a comment