[SQL] 재귀 CTE(Command Table Expression)를 이용한 계층적 구조 탐색

2025. 5. 9. 19:14·알고리즘/SQL
728x90
반응형
SQL에서의 재귀(WITH RECURSIVE)
주로 계층 구조, 예를 들어 조직도, 카테고리 트리, 댓글 트리 등을 탐색할 때 사용된다.

 

 

✅ 예시 테이블: employees

employee_id name manager_id
1 CEO NULL
2 ManagerA 1
3 ManagerB 1
4 StaffA1 2
5 StaffA2 2
6 StaffB1 3

 

✅ 목표

  • CEO부터 시작해서, 각 직원이 누구 밑에 있는지를 계층적으로 출력
  • 그리고 각 직원의 레벨(깊이) 도 함께 보여줌

 

WITH RECURSIVE ORG_CHART AS (
	-- 1단계: 루트 직원(CEO)을 가져온다.
    SELECT
    	EMPLOYEE_ID,
        NAME,
        MANAGER_ID,
        1 AS LEVEL
    FROM EMPLOYEES
    WHERE MANAGER_ID IS NULL
    
    UNION ALL
    
    -- 2단계 이상: 자기 자신을 재귀적으로 연결한다.
    SELECT
    	E.EMPLOYEE_ID,
        E.NAME,
        E.MANAGER_ID,
        OC.LEVEL + 1 AS LEVEL
    FROM EMPLOYEES E
    JOIN ORG_CHART OC ON E.MANAGER_ID = OC.EMPLOYEE_ID
)

SELECT * FROM ORG_CHART
ORDER BY LEVEL, MANAGER_ID, EMPLOYEE_ID;

 

✅ 결과

employee_id name manager_id level
1 CEO NULL 1
2 ManagerA 1 2
3 ManagerB 1 2
4 StaffA1 2 3
5 StaffA2 2 3
6 StaffB1 3 3

 

 

참고할만한 문제

https://moon-code.tistory.com/entry/SQL-%EC%9E%85%EC%96%91-%EC%8B%9C%EA%B0%81-%EA%B5%AC%ED%95%98%EA%B8%B0-2

 

[SQL] 입양 시각 구하기 (2)

https://school.programmers.co.kr/learn/courses/30/lessons/59413#qna 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해당 문제는 Recursive

moon-code.tistory.com

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 > SQL' 카테고리의 다른 글

[SQL] 노선별 평균 역 사이 거리 조회하기  (1) 2025.06.09
[SQL] 조건에 맞는 사원 정보 조회하기  (0) 2025.05.16
[SQL] 입양 시각 구하기 (2)  (0) 2025.05.09
[SQL] 년, 월, 성별 별 상품 구매 회원 수 구하기  (0) 2025.05.09
[SQL] 저자 별 카테고리 별 매출액 집계하기  (0) 2025.05.08
'알고리즘/SQL' 카테고리의 다른 글
  • [SQL] 조건에 맞는 사원 정보 조회하기
  • [SQL] 입양 시각 구하기 (2)
  • [SQL] 년, 월, 성별 별 상품 구매 회원 수 구하기
  • [SQL] 저자 별 카테고리 별 매출액 집계하기
moongi
moongi
프로그래밍 관련 공부를 정리하는 블로그
  • moongi
    By_Me
    moongi
  • 전체
    오늘
    어제
    • 공부 (81)
      • 알고리즘 (47)
        • 기업별 유사 문제 (2)
        • Sudo Code (5)
        • 예외처리 (1)
        • SQL (9)
      • spring boot (6)
        • jpa (0)
        • querydsl (0)
        • MVC pattern (0)
        • setting (2)
      • 취준 (3)
      • CS (8)
        • 디자인패턴 (1)
        • 데이터베이스 (4)
        • 네트워크 (3)
        • 운영체제 (0)
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
moongi
[SQL] 재귀 CTE(Command Table Expression)를 이용한 계층적 구조 탐색
상단으로

티스토리툴바