WITH 절(CTE)로 쿼리 구조화: 단계별 쿼리, 재사용, DML 과 함께 쓰기
서브쿼리가 세 겹으로 겹치면 안쪽부터 읽어야 해서 무슨 쿼리인지 파악하기 어렵습니다.
WITH절(CTE, 공통 테이블 식)은 중간 결과에 이름을 붙여 위에서 아래로 읽히게 만들고, 같은 결과를 여러 번 참조할 수 있게 합니다. 이 레슨은 인라인 뷰 중첩을 CTE 로 바꾸는 법, CTE 재사용 패턴, INSERT·UPDATE·DELETE 와 함께 쓰는 DB별 문법을 다룹니다.
1. 왜 배우는가
실무 쿼리는 "부서 평균을 구하고, 평균 이상인 사원을 고르고, 그 사원들의 주문을 합산한다" 처럼 단계가 이어집니다. 이를 인라인 뷰로 쓰면 가장 안쪽 쿼리가 첫 단계이고 가장 바깥이 마지막 단계라서, 사람은 안에서 밖으로 거꾸로 읽어야 합니다.
WITH 절은 각 단계에 이름을 붙여 위에서 아래로 쓰게 해 줍니다. 중간 단계만 따로 실행해 확인하기도 쉽고, 같은 단계를 두 번 이상 참조할 수도 있습니다. 조회 쿼리 대부분이 이 형태를 쓰고, 복잡한 보고서 쿼리를 리뷰하거나 물려받을 때 가장 먼저 CTE 로 다시 쓰는 일이 많습니다.
이 레슨은 인라인 뷰를 CTE 로 바꾸기, 월별 매출 CTE 를 두 번 참조하기, 분석 함수 Top-N 과 파라미터 CTE, DML 과의 조합을 차례로 봅니다. 재귀 CTE 는 고급 04 계층 쿼리에서 다뤘으므로 여기서는 반복하지 않습니다.