25분
재귀 CTE: 계층 구조 다루기
Day 3: 쿼리가 너무 복잡한데 쪼갤 수 없나?
재귀 CTE: 계층 구조 다루기
SQL 고급 - 윈도우 함수와 성능 최적화 > Day 3: 쿼리가 너무 복잡한데 쪼갤 수 없나?
학습 목표
재귀 CTE의 작동 원리를 이해한다 조직도, 카테고리 트리를 SQL로 처리한다
재귀 CTE가 필요한 상황
조직도 데이터:
에디터 로딩 중...
"CEO 아래 모든 직원을 조회하고 싶어. 그리고 각 직원이 몇 단계 아래인지도."
일반 쿼리로는 불가능! 재귀가 필요하다.
재귀 CTE 구조
에디터 로딩 중...
실행 흐름
에디터 로딩 중...
예제 1: 숫자 1~5 생성
에디터 로딩 중...
결과: 1, 2, 3, 4, 5
예제 2: 조직도 전체 출력
에디터 로딩 중...
결과:
에디터 로딩 중...
무한 루프 방지
에디터 로딩 중...
항상 종료 조건(WHERE)을 명시하자!
재귀 CTE 사용 사례
| 상황 | 예시 |
|---|---|
| 조직도 | 상사-부하 관계 |
| 카테고리 트리 | 대분류-중분류-소분류 |
| BOM (Bill of Materials) | 부품-조립품 구조 |
| 경로 탐색 | 그래프에서 경로 찾기 |
| 날짜 생성 | 기간 내 모든 날짜 |