계층 쿼리 prior 위치

2024. 5. 21. 09:24DBMS/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