SQL PIVOT을 사용한 데이터 열 변환

1. 핵심 원리

PIVOT는 SQL에서 행 데이터를 열 데이터로 변환하는 기능입니다. 주로 집계 함수와 함께 사용되어 그룹별로 데이터를 요약하여 표시할 수 있습니다. 예를 들어, 부서 번호별로 급여를 열로 표시하고자 할 때 유용합니다.

2. 실무에서 쓰이는 이유

실무에서 PIVOT는 다양한 데이터 집계를 더 명확하게 표현하기 위해 사용됩니다. 일반적으로 보고서나 대시보드를 작성할 때, 행의 데이터를 열로 변환함으로써 데이터를 시각적으로 쉽게 분석할 수 있도록 돕습니다.

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

  • 상황 예시 1: 월별로 각 제품군의 판매량을 보고할 때, 월을 행으로, 제품군을 열로 배치하여 월별 제품군별 판매 데이터를 한눈에 볼 수 있도록 정리합니다.
  • 상황 예시 2: 부서별로 직원의 평균 급여를 보고할 때, 부서명을 행으로, 각 직군을 열로 배치하여 부서별 직군별 평균 급여를 비교 분석합니다.

4. 연습 문제

EMP 테이블에서 부서 번호별 총 급여를 PIVOT을 사용하여 열로 출력해보세요.

SELECT *
FROM (SELECT deptno, sal FROM emp)
PIVOT (SUM(sal) FOR deptno IN (10, 20, 30));

5. 연습문제 해답

위에 제공된 SQL 문이 연습문제에 대한 답입니다. 해당 SQL 문은 EMP 테이블에서 DEPTNO를 기준으로 각 부서의 총 급여를 출력합니다.

6. 응용 문제

각 직업별로 총 급여를 PIVOT을 사용하여 열로 출력해보세요.

SELECT *
FROM (SELECT job, sal FROM emp)
PIVOT (SUM(sal) FOR job IN ('ANALYST', 'CLERK', 'MANAGER', 'SALESMAN'));

7. 응용문제 해답

응용 문제에 대한 SQL 답안은 위와 같습니다. 이 SQL 문은 EMP 테이블에서 JOB을 기준으로 각 직업의 총 급여를 출력합니다.

8. 전자상거래 업계에서 쓰일 수 있는 경우 2가지 및 SQL 코드

  • 경우 1: 카테고리별 월별 매출 집계
    • 상황: 전자상거래 사이트에서 각 제품 카테고리의 월별 매출을 보고하고자 할 때.
    • SQL 코드:
    SELECT * FROM (SELECT category, EXTRACT(MONTH FROM sale_date) AS month, SUM(sales) AS total_sales FROM sales_data GROUP BY category, EXTRACT(MONTH FROM sale_date)) PIVOT (SUM(total_sales) FOR month IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12));
  • 경우 2: 고객 등급별 제품 구매 패턴 분석
    • 상황: 고객 등급별로 특정 기간 동안 구매한 주요 제품군을 비교하고자 할 때.
    • SQL 코드:
      sql SELECT * FROM (SELECT customer_tier, product_category, COUNT(*) AS purchase_count FROM orders_data WHERE purchase_date BETWEEN '2023-01-01' AND '2023-12-31' GROUP BY customer_tier, product_category) PIVOT (SUM(purchase_count) FOR product_category IN ('Electronics', 'Clothing', 'Home Appliances', 'Books'));

9. SQL 코드 시각화 예시 테이블

첫 번째 경우 (카테고리별 월별 매출 집계)

CategoryJanFebMarAprMayJunJulAugSepOctNovDec
Electronics500070006500720080009000750068007100850092009500
Clothing300032003300340035003700360035503700400042004400
Home Appliances400042004100430045004800470049005200540056005900

두 번째 경우 (고객 등급별 제품 구매 패턴 분석)

Customer TierElectronicsClothingHome AppliancesBooks
Silver120806050
Gold200150130110
Platinum300220210180

Posts created 411

Related Posts

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

Back To Top