계층형 쿼리 구현하기
재귀 CTE는 계층형 쿼리를 구현할 때도 사용할 수 있습니다. 계층형(hierarchical) 쿼리란 계층 구조로 데이터가 조회되는 쿼리로, 트리 구조라고도 합니다. 예제를 보며 작동 방식을 알아보겠습니다. 먼저 실습을 위해 다음과 같이 테이블을 만들고 데이터를 입력합니다.
코드 11-8
CREATE TABLE emp_hierarchy
(
employee_id INT,
emp_name VARCHAR(80),
manager_id INT,
salary INT,
dept_name VARCHAR(80)
);
INSERT INTO emp_hierarchy VALUES
(200, 'Jennifer Whalen', 101, 4400, 'Administration'),
(203, 'Susan Mavris', 101, 6500, 'Human Resources'),
(103, 'Alexander Hunold', 102, 9000, 'IT'),
(104, 'Bruce Ernst', 103, 6000, 'IT'),
(105, 'David Austin', 103, 4800, 'IT'),
(107, 'Diana Lorentz', 103, 4200, 'IT'),
(106, 'Valli Pataballa', 103, 4800, 'IT'),
(204, 'Hermann Baer', 101, 10000, 'Public Relations'),
(100, 'Steven King', null, 24000, 'Executive'),
(101, 'Neena Kochhar', 100, 17000, 'Executive'),
(102, 'Lex De Haan', 100, 17000, 'Executive'),
(113, 'Luis Popp', 108, 6900, 'Finance'),
(112, 'Jose Manuel Urman', 108, 7800, 'Finance'),
(111, 'Ismael Sciarra', 108, 7700, 'Finance'),
(110, 'John Chen', 108, 8200, 'Finance'),
(108, 'Nancy Greenberg', 101, 12008, 'Finance'),
(109, 'Daniel Faviet', 108, 9000, 'Finance'),
(205, 'Shelley Higgins', 101, 12008, 'Accounting'),
(206, 'William Gietz', 205, 8300, 'Accounting');
SELECT *
FROM emp_hierarchy;