SQL/MSSQL

[MSSQL] With 절 사용 방법

Ant_U 2023. 3. 13. 09:10
728x90
반응형

 

MS SQL Server에서 WITH 절은 일시적인 서브쿼리를 생성하는 방법 중 하나입니다.

이 서브쿼리는 WITH 절 뒤에 정의된 이름을 가지며, 이 이름을 사용하여 서브쿼리 결과를 참조할 수 있습니다.

이러한 구문을 "공통 테이블 식(Common Table Expression, CTE)"이라고도 부릅니다.

WITH 절은 보다 복잡한 쿼리를 작성할 때 유용하며, 코드 가독성을 높이고 중복을 줄일 수 있습니다. 

일반적으로 WITH 절은 두 가지 방식으로 사용됩니다.

1. WITH 절과 함께 서브쿼리 사용하기

WITH sales_data AS (
    SELECT customer_id, SUM(amount) AS total_sales
    FROM sales
    GROUP BY customer_id
)
SELECT customer_id, total_sales
FROM sales_data
WHERE total_sales > 10000;

위의 예제에서는 WITH 절을 사용하여 sales_data 서브쿼리를 정의합니다.

이 서브쿼리에서는 sales 테이블에서 각 고객의 총 매출을 계산합니다.

그리고 이 sales_data 서브쿼리에서 반환된 결과를 이용하여 sales 테이블에서 매출이 10,000달러 이상인 고객들의 정보를 가져옵니다.

2. 여러 WITH 절을 조합하여 사용하기

WITH sales_data AS (
    SELECT customer_id, SUM(amount) AS total_sales
    FROM sales
    GROUP BY customer_id
),
big_customers AS (
    SELECT customer_id
    FROM sales_data
    WHERE total_sales > 10000
)
SELECT c.*
FROM customers c
INNER JOIN big_customers bc ON c.customer_id = bc.customer_id;

위의 예제에서는 WITH 절을 두 개 사용하여 sales_data와 big_customers 두 개의 서브쿼리를 정의합니다.

sales_data 서브쿼리는 고객의 총 매출을 계산하고, big_customers 서브쿼리에서는 매출이 10,000달러 이상인 고객들의 ID를 가져옵니다.

마지막으로 customers 테이블과 big_customers 서브쿼리를 조인하여 매출이 10,000달러 이상인 고객들의 정보를 가져옵니다.

WITH 절을 사용하면 복잡한 쿼리를 간단하게 만들 수 있으며, 코드 가독성을 높일 수 있습니다.

또한 일시적인 서브쿼리를 정의하므로, 이를 이용한 쿼리 실행 시간을 최적화할 수 있는 경우도 있습니다.

728x90
반응형