SQL UNPIVOT 연산자 활용법

1. 핵심 원리

UNPIVOT는 PIVOT과 반대로, 열(column)에 저장된 데이터를 행(row)으로 변환하여 출력합니다. 즉, 여러 열에 저장된 데이터를 하나의 열로 통합하여 행으로 확장합니다. 이는 데이터의 형태를 변환하여 분석하기 쉽게 만들어주는 도구로 사용됩니다.

2. 실무에서 쓰이는 이유

실무에서 UNPIVOT은 다음과 같은 이유로 사용됩니다:

  • 데이터 정규화: 여러 열에 흩어져 있는 데이터를 하나의 열로 모아서 데이터베이스 구조를 간결하게 만들 수 있습니다.
  • 데이터 분석: 여러 열에 분산된 데이터를 분석하기 쉽게 변환하여, 특정 패턴이나 이상치를 발견하기 쉽습니다.

3. 실무에서 구체적으로 사용되는 상황

UNPIVOT은 다음과 같은 상황에서 사용됩니다:

  • 매출 데이터 변환: 제품별 매출이 여러 열로 나뉘어 있을 때, 이를 하나의 열로 변환하여 분석하는 경우.
  • 설문 조사 데이터: 설문 응답 결과가 각 항목별로 열에 분산되어 있을 때, 이를 행으로 변환하여 응답 패턴을 분석하는 경우.

예상 상황 예측:

  • 예시 1: 각 지역별 매출 데이터를 하나의 열로 변환하여 분석.
  • 예시 2: 여러 항목에 대한 설문 응답 결과를 하나의 열로 변환하여 분석.

4. 연습 문제

문제 1:

다음의 테이블에서 UNPIVOT을 사용하여 제품별 판매 수량을 행으로 변환하는 SQL 쿼리를 작성하시오:

  • 테이블: sales_data
  • 열: ProductA, ProductB, ProductC

문제 2:

각 팀별 성과가 열로 나뉘어 있는 테이블에서, 성과 데이터를 하나의 열로 변환하여 각 팀의 성과를 조회하는 SQL 쿼리를 작성하시오.

5. 연습 문제 해답

해답 1:

SELECT *
FROM sales_data
UNPIVOT (quantity FOR product IN (ProductA, ProductB, ProductC));

해답 2:

SELECT *
FROM team_performance
UNPIVOT (performance FOR team IN (Team1, Team2, Team3));

6. 응용 문제

문제 1:

각 달별 판매 데이터를 포함하고 있는 테이블에서, UNPIVOT을 사용하여 월별 데이터를 하나의 열로 변환하는 SQL 쿼리를 작성하시오:

  • 열: January, February, March

문제 2:

여러 제품의 재고 상태가 열로 나뉘어 있는 테이블에서, 각 제품의 재고 상태를 하나의 열로 변환하여 조회하는 SQL 쿼리를 작성하시오.

7. 응용 문제 해답

해답 1:

SELECT *
FROM monthly_sales
UNPIVOT (sales_amount FOR month IN (January, February, March));

해답 2:

SELECT *
FROM product_inventory
UNPIVOT (stock_status FOR product IN (ProductX, ProductY, ProductZ));

8. 전자상거래 업계에서의 사용 예시

사용될 수 있는 경우 예측:

  • 다양한 카테고리 매출 데이터 통합: 여러 카테고리에 대한 매출 데이터를 하나의 열로 통합하여 분석.
  • 재고 데이터 분석: 각 제품의 재고 상태를 하나의 열로 통합하여 관리 효율성을 높임.

예상 상황 문제:

  1. 각 카테고리의 매출 데이터를 UNPIVOT하여, 카테고리별 매출 현황을 하나의 열로 변환하는 SQL 쿼리를 작성하시오.
  2. 다양한 공급업체의 재고 데이터를 UNPIVOT하여, 공급업체별 재고 현황을 조회하는 SQL 쿼리를 작성하시오.

SQL 코드 및 시각적 예시

문제 1 SQL 코드:

SELECT *
FROM category_sales
UNPIVOT (sales_amount FOR category IN (Electronics, Clothing, Books));
예시 테이블:
categorysales_amount
Electronics1200
Clothing800
Books500

문제 2 SQL 코드:

SELECT *
FROM supplier_inventory
UNPIVOT (inventory_status FOR supplier IN (SupplierA, SupplierB, SupplierC));
예시 테이블:
supplierinventory_status
SupplierA100
SupplierB150
SupplierC200

Posts created 411

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top