WITH문 (Common Table Expression, CTE)과 서브쿼리는 둘 다 SQL 쿼리의 구조를 단순화하고 복잡한 쿼리를 분해하는 데 유용.
- CTE (WITH문) : CTE는 쿼리의 시작 부분에 정의되며, 이름을 가진 임시 결과 집합을 생성 -> 코드의 가독성 향상.
CTE 내에서 정의된 쿼리를 메인 쿼리에서 여러 번 재사용할 수 있음.
다른 사람과 코드를 함께 보기에 편리함.- 서브쿼리 : 서브쿼리는 메인 쿼리 내에서 일반적으로 한 번만 사용됨.
- WHIT문 (Common Table Expression, CTE)를 스크립트 맨 먼저 선언을 해준 다음, 메인쿼리에서 사용
WITH cte_name AS ( -- CTE 정의 쿼리 ) -- 메인 쿼리 SELECT * FROM cte_name;
WITH LatestOrders AS (
SELECT customerNumber, MAX(orderDate) AS MaxOrderDate
FROM orders
GROUP BY customerNumber
)
SELECT o.orderNumber, o.orderDate, o.customerNumber
FROM orders o
JOIN LatestOrders lo ON o.customerNumber = lo.customerNumber AND o.orderDate = lo.MaxOrderDate;
SELECT customerNumber, MAX(orderDate) AS MaxOrderDate
FROM orders
GROUP BY customerNumber;