SQL SUM과 DECODE 함수를 사용한 데이터 열 변환

핵심 원리

이 예제에서는 SUM 함수와 DECODE 함수를 사용하여 행 데이터를 열 데이터로 변환하는 방법을 배웁니다. DECODE 함수는 조건에 따라 값을 반환하며, 이를 통해 특정 조건에 맞는 데이터를 필터링할 수 있습니다. SUM 함수는 이러한 데이터를 합산하여 원하는 결과를 도출하는 데 사용됩니다.

실무에서 쓰이는 이유

실무에서 SUMDECODE 함수를 사용하는 이유는 다양한 기준에 따라 데이터를 집계하여 보고서를 생성하는 데 유용하기 때문입니다. 예를 들어, 부서별 급여 합계나 직책별 급여 합계와 같이 데이터를 열로 변환하여 분석하는 경우에 주로 사용됩니다.

실무에서 구체적으로 어떤 상황에서 사용되는지 예측

  • 부서별 예산 집계: 각 부서의 예산을 열 형태로 나타내어 전체 예산 대비 부서별 비중을 분석할 때 사용될 수 있습니다.
  • 직책별 성과 분석: 회사 내 다양한 직책의 성과(예: 판매액, 프로젝트 성공률)를 분석할 때, 각 직책의 성과를 별도의 열로 나누어 비교 분석할 때 유용합니다.

예상 상황 예측

  • 매출 데이터 분석: 특정 기간 동안 지역별 매출 데이터를 열로 나누어 분석할 때 사용될 수 있습니다.
  • 인사 데이터 분석: 부서별로 직원 수나 평균 급여 데이터를 열로 변환하여 조직의 인력 현황을 시각적으로 분석할 때 유용합니다.

연습 문제

문제: 부서 번호가 10, 20, 30번인 경우 각각의 부서에 속한 직원들의 총 급여를 계산하여 열 형태로 출력하세요.

SELECT 
    SUM(DECODE(deptno, 10, sal)) AS "10번 부서",
    SUM(DECODE(deptno, 20, sal)) AS "20번 부서",
    SUM(DECODE(deptno, 30, sal)) AS "30번 부서"
FROM emp;

연습 문제 해답

해답: 위의 SQL 쿼리를 사용하면 부서별 총 급여를 열로 나누어 출력할 수 있습니다.

응용 문제

문제: 부서 번호와 직책별로 나누어 각각의 부서에 속한 직원들의 총 급여를 계산하여 열 형태로 출력하세요.

SELECT 
    deptno,
    SUM(DECODE(job, 'ANALYST', sal)) AS "ANALYST",
    SUM(DECODE(job, 'CLERK', sal)) AS "CLERK",
    SUM(DECODE(job, 'MANAGER', sal)) AS "MANAGER",
    SUM(DECODE(job, 'SALESMAN', sal)) AS "SALESMAN"
FROM emp
GROUP BY deptno;

응용 문제 해답

해답: 위의 쿼리를 실행하면 부서별로 각 직책에 대한 총 급여를 열 형태로 출력할 수 있습니다.

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

  1. 상품 카테고리별 매출 합계:
  • 다양한 상품 카테고리별 매출을 분석하여 각 카테고리의 비중을 파악할 때 유용합니다.
   SELECT 
       SUM(DECODE(category, 'Electronics', sales_amount)) AS "Electronics",
       SUM(DECODE(category, 'Clothing', sales_amount)) AS "Clothing",
       SUM(DECODE(category, 'Books', sales_amount)) AS "Books"
   FROM sales_data;
  1. 지역별 판매량 비교:
  • 각 지역에서의 판매량을 분석하여 지역별 판매 전략을 수립할 때 유용합니다.
   SELECT 
       SUM(DECODE(region, 'North', quantity_sold)) AS "North",
       SUM(DECODE(region, 'South', quantity_sold)) AS "South",
       SUM(DECODE(region, 'East', quantity_sold)) AS "East",
       SUM(DECODE(region, 'West', quantity_sold)) AS "West"
   FROM sales_data;

Posts created 411

Related Posts

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

Back To Top