2024년 SQL 시험 PIVOT절과 UNPIVOT절 총정리

250x250
728x90

2024년 SQL 시험 PIVOT절과 UNPIVOT절 총정리

실제 데이터와 함께 PIVOT 및 UNPIVOT 쿼리 예시를 설명하겠습니다. 먼저, 간단한 판매 데이터를 구성하고, 이 데이터를 사용하여 SQL의 PIVOT과 UNPIVOT 기능도 예저데이터와 함께 설명드릴게요!

예제 데이터 준비

아래는 간단한 sales_data 테이블입니다. 이 테이블에는 고객별로 다양한 제품의 판매량이 기록되어 있습니다.

Customer Product Quantity

Alice Product A 2
Bob Product B 5
Alice Product B 3
Carol Product C 4
Bob Product A 1

PIVOT 쿼리 예시

이제 이 데이터를 사용하여 고객별로 각 제품의 총 판매량을 요약하는 PIVOT 쿼리를 작성해 보겠습니다. 이 예시는 SQL Server 문법을 사용합니다.

SELECT Customer, [Product A], [Product B], [Product C]
FROM
(
    SELECT Customer, Product, Quantity
    FROM sales_data
) AS SourceTable
PIVOT
(
    SUM(Quantity)
    FOR Product IN ([Product A], [Product B], [Product C])
) AS PivotTable;

이 쿼리는 고객별로 Product A, Product B, Product C의 판매량을 열 형태로 요약하여 표시합니다. 결과는 다음과 같을 것입니다.

Customer Product A Product B Product C

Alice 2 3 0
Bob 1 5 0
Carol 0 0 4

UNPIVOT 쿼리 예시

이제 PIVOT으로 요약된 데이터를 UNPIVOT을 사용하여 다시 상세한 행 형태로 변환해 보겠습니다. 이 예시 역시 SQL Server 문법을 사용합니다.

SELECT Customer, Product, Quantity
FROM
(
    SELECT Customer, [Product A], [Product B], [Product C]
    FROM PivotTable
) AS PivotTable
UNPIVOT
(
    Quantity FOR Product IN ([Product A], [Product B], [Product C])
) AS UnpivotTable;

이 쿼리는 PIVOT된 데이터를 다시 원래의 상세한 형태로 변환합니다. 결과는 다음과 같이 됩니다.

Customer Product Quantity

Alice Product A 2
Alice Product B 3
Bob Product A 1
Bob Product B 5
Carol Product C 4

설명

  • PIVOT: PIVOT 절은 특정 열의 값을 새로운 열로 변환하여 데이터를 요약하는 데 사용됩니다. 이 예제에서는 Product의 각 값(Product A, Product B, Product C)을 별도의 열로 변환하여, 각 고객별로 해당 제품의 총 판매량을 요약했습니다.
  • UNPIVOT: UNPIVOT 절은 PIVOT된 요약 데이터를 다시 원래의 행 형태로 변환합니다. 이 과정에서 여러 열이 하나의 열로 합쳐지며, 각 값은 별도의 행으로 표시됩니다.

이 예시를 통해, PIVOT과 UNPIVOT을 사용하여 데이터의 형태를 변환하고, 다양한 분석 및 보고 목적에 맞게 데이터를 조작하는 방법을 이해할 수 있습니다.

 

 

쿼리 주석으로 설명!

PIVOT 쿼리 예시

-- 고객별로 각 제품의 총 판매량을 요약하는 PIVOT 쿼리
SELECT Customer, [Product A], [Product B], [Product C]
FROM
(
    -- 원본 판매 데이터에서 고객, 제품, 판매량을 선택
    SELECT Customer, Product, Quantity
    FROM sales_data
) AS SourceTable
PIVOT
(
    -- 제품별 판매량을 합산하여 각 제품을 별도의 열로 요약
    SUM(Quantity) FOR Product IN ([Product A], [Product B], [Product C])
) AS PivotTable;

이 쿼리는 sales_data 테이블에서 고객별로 Product A, Product B, Product C의 판매량을 집계합니다. 집계 과정에서 SUM 함수를 사용하여 각 제품의 총 판매량을 계산하고, 이를 각각의 열로 표시합니다.

UNPIVOT 쿼리 예시

-- PIVOT으로 요약된 데이터를 다시 상세한 행 형태로 변환하는 UNPIVOT 쿼리
SELECT Customer, Product, Quantity
FROM
(
    -- PIVOT 쿼리의 결과로 얻은 요약 테이블
    SELECT Customer, [Product A], [Product B], [Product C]
    FROM PivotTable
) AS PivotTable
UNPIVOT
(
    -- 여러 열에 분산된 데이터를 'Quantity'라는 단일 열로 통합하며,
    -- 'Product' 열은 각 제품 이름을 나타내는 열로 변환
    Quantity FOR Product IN ([Product A], [Product B], [Product C])
) AS UnpivotTable;

UNPIVOT 쿼리는 PIVOT을 통해 요약된 데이터를 다시 원래 형태로 되돌립니다. 여기서, [Product A], [Product B], [Product C] 열이 하나의 Product 열로 통합되며, 각 값은 Quantity 열에 위치하게 됩니다. 이 과정은 요약된 데이터를 다시 상세 분석이 가능한 형태로 변환할 때 유용합니다.

이 예시들은 PIVOT과 UNPIVOT 쿼리의 기본적인 사용법을 보여주며, SQL 쿼리 작성 시 이러한 주석을 추가함으로써 쿼리의 이해를 돕고, 유지 보수를 용이하게 할 수 있습니다.

728x90

댓글

Designed by JB FACTORY