데이터 분석 기술 블로그

WITH 절 본문

SQL/개념

WITH 절

데이터분석가 이채은 2024. 11. 29. 03:48

WITH 절이란?

"WITH"는 SQL에서 서브쿼리를 정의하고 재사용할 수 있도록 해주는 기능으로, 공통 테이블 표현식 (Common Table Expression, CTE)이라고 합니다. 이를 통해 쿼리를 더 읽기 쉽고, 재사용 가능하게 작성할 수 있습니다.


WITH 구문

WITH cte_name AS (
    SELECT column1, column2
    FROM table_name
    WHERE condition
)
SELECT *
FROM cte_name;

 

  • WITH: 공통 테이블 표현식을 정의.
  • cte_name: 공통 테이블 표현식의 이름.
  • AS: 뒤에 오는 서브쿼리를 공통 테이블 표현식으로 정의.

WITH 특징

 

  1. 가독성 향상:
    • 복잡한 쿼리를 여러 단계로 나누어 이해하기 쉽게 작성할 수 있음.
  2. 재사용 가능:
    • CTE는 하나의 쿼리 내에서 여러 번 사용할 수 있음.
  3. 임시적 테이블:
    • CTE는 쿼리가 실행되는 동안만 존재하는 임시 테이블로 동작.
  4. 재귀적 쿼리 지원:
    • CTE는 자기 자신을 참조하는 재귀적 쿼리를 작성할 수 있음.

예제

 

 

문제: 제품별로 총 매출액(quantity * price)을 계산한 다음, 총매출액이 1000 이상인 제품만 선택.

 

WITH SalesRevenue AS (
    SELECT
        product,
        quantity * price AS total_revenue
    FROM Sales
)
SELECT *
FROM SalesRevenue
WHERE total_revenue >= 1000;

 


 

문제: 주문이 있는 고객만 선택하고, 고객 이름과 총 주문 금액을 출력.

 

WITH FilteredOrders AS (
    SELECT
        customer_id,
        SUM(total_amount) AS total_spent
    FROM Orders
    GROUP BY customer_id
),
FilteredCustomers AS (
    SELECT
        c.customer_id,
        c.name,
        o.total_spent
    FROM Customers c
    JOIN FilteredOrders o
    ON c.customer_id = o.customer_id
)
SELECT *
FROM FilteredCustomers;

'SQL > 개념' 카테고리의 다른 글

OFFSET 절  (0) 2024.12.01
LIMIT 절  (0) 2024.11.30
EXISTS 연산자  (0) 2024.11.28
UNION 연산  (0) 2024.11.27
LOWER 함수  (0) 2024.11.26