WITH 구문(CTE, Common Table Expression)은 쿼리 제일 상단에서 임시 가상 테이블을 선언해두고, 아래 메인 쿼리에서 변수처럼 가져다 쓰는 문법입니다. 쿼리가 복잡해질수록 가독성을 극적으로 높여주고 재사용이 가능해 실무에서 몹시 애용됩니다.
💡 핵심 비유
수학 문제의 치환 복잡하고 긴 수식을 바로 풀지 않고, A = (긴 수식) 이라고 윗부분에 정의해둔 다음, 아랫부분에서 A + B로 간단하게 푸는 것과 완벽히 같습니다.
🧩 원리 이해하기
Script-1.sql
1
-- 복잡한 계산식이나 서브쿼리를 WITH로 위로 빼내면,
-- 메인 쿼리가 아주 짧고 아름다워집니다.
WITH DEPT_AVG AS (
SELECT DEPT_ID, AVG(SALARY) AS AVG_SAL
FROM EMPLOYEES
GROUP BY DEPT_ID
)
SELECT E.NAME, E.SALARY, D.AVG_SAL
FROM EMPLOYEES E
JOIN DEPT_AVG D ON E.DEPT_ID = D.DEPT_ID
WHERE E.SALARY > D.AVG_SAL;