계층 쿼리 prior 위치
2024. 5. 21. 09:24ㆍDBMS/SQLQuery
반응형
drop table departments_test_test;
CREATE TABLE departments_test (
dept_id NUMBER PRIMARY KEY,
dept_name VARCHAR2(100),
parent_dept_id NUMBER
);
INSERT INTO departments_test (dept_id, dept_name, parent_dept_id) VALUES (1, 'CEO Office', NULL);
INSERT INTO departments_test (dept_id, dept_name, parent_dept_id) VALUES (2, 'Marketing', 1);
INSERT INTO departments_test (dept_id, dept_name, parent_dept_id) VALUES (3, 'Finance', 1);
INSERT INTO departments_test (dept_id, dept_name, parent_dept_id) VALUES (4, 'Sales', 1);
INSERT INTO departments_test (dept_id, dept_name, parent_dept_id) VALUES (5, 'Public Relations', 2);
INSERT INTO departments_test (dept_id, dept_name, parent_dept_id) VALUES (6, 'Advertising', 5);
select lpad(' ',4*(level-1))||dept_name as dept_name
from departments_test
start with parent_dept_id is null
connect by prior dept_id = parent_dept_id;
조직도를 계층적으로 표현하는데 각 부서는 해당 부서의 ID와 상위 부서의 ID를 포함하는 열로 표현할 수 있다.
START WITH 에는 최상위 부서인 CEO Office를 시작점으로 설정하고 CONNECT BY 절에서는 각 부서의 dept_id가 해당 부서의 상위 부서의 parent_dept_id 와 연결되어 있는지를 지정한다.
PRIOR는 현재 행과 연결된 이전 행을 가리킨다.
반응형
'DBMS > SQLQuery' 카테고리의 다른 글
PERCENT_RANK() 상대평가 (0) | 2024.06.22 |
---|---|
WINDOW FUNCTION (0) | 2024.06.22 |
NVL, COALESCE, NULLIF (0) | 2024.05.20 |
나눗셈 몫 (0) | 2024.05.08 |
DECODE 함수에서 NULL (0) | 2024.04.19 |