반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262)
    • AWS (3)
    • C# (1)
    • SQL (236)
      • MYSQL (186)
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

[MSSQL] With 절 사용 방법
SQL/MSSQL

[MSSQL] With 절 사용 방법

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
반응형

'SQL > MSSQL' 카테고리의 다른 글

[MSSQL] IS NULL 사용 방법  (0) 2023.03.17
[MSSQL] Insert Into / 데이터 삽입 쿼리  (0) 2023.03.16
[MSSQL] Dateadd 함수 사용법  (0) 2023.03.15
[MSSQL] Select Into / 테이블 복사 쿼리 사용 방법  (1) 2023.03.14
[MSSQL] Create Temp Table / 임시 테이블 생성 쿼리  (0) 2023.03.12
[MSSQL] SQL SERVER Table NOLOCK 쿼리  (0) 2023.03.11
[MSSQL] Truncate Table / 테이블 데이터 전체 삭제 쿼리  (0) 2023.03.10
[MSSQL] Delete Table 테이블 데이터 삭제 방법 및 예시  (0) 2023.03.10
    'SQL/MSSQL' 카테고리의 다른 글
    • [MSSQL] Dateadd 함수 사용법
    • [MSSQL] Select Into / 테이블 복사 쿼리 사용 방법
    • [MSSQL] Create Temp Table / 임시 테이블 생성 쿼리
    • [MSSQL] SQL SERVER Table NOLOCK 쿼리
    Ant_U
    Ant_U

    티스토리툴바