복잡한 쿼리를 이름 있는 단계로 나눕니다.
WITH 공통 테이블 식은 한 문장 안에서 사용할 임시 결과에 이름을 붙입니다. 필터·집계 단계를 분리해 읽기 쉽게 만들지만 항상 물리적으로 한 번만 계산된다는 뜻은 아닙니다.
CTE 이름은 filtered_orders, customer_totals처럼 결과가 무엇인지 표현하고 각 단계의 행 단위를 유지합니다.
작은 쿼리를 과도하게 쪼개면 흐름을 따라가기 어려워집니다. 업무 단계가 분명할 때 사용합니다.
WITH로 시작하는 CTE 문법은 SQLite·MariaDB·PostgreSQL 최신 버전 모두 지원하지만, 오래된 MariaDB(10.2 이전)에서는 쓸 수 없다는 점을 배포 대상에서 확인하세요.
CTE가 성능 경계라고 가정하지 말고 제품 버전별 실행 계획을 확인하세요.
직접 바꿔보세요paid 주문을 먼저 거른 뒤 고객별 합계를 계산하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.