핵심 원리
이 예제에서는 SUM
함수와 DECODE
함수를 사용하여 행 데이터를 열 데이터로 변환하는 방법을 배웁니다. DECODE
함수는 조건에 따라 값을 반환하며, 이를 통해 특정 조건에 맞는 데이터를 필터링할 수 있습니다. SUM
함수는 이러한 데이터를 합산하여 원하는 결과를 도출하는 데 사용됩니다.
실무에서 쓰이는 이유
실무에서 SUM
과 DECODE
함수를 사용하는 이유는 다양한 기준에 따라 데이터를 집계하여 보고서를 생성하는 데 유용하기 때문입니다. 예를 들어, 부서별 급여 합계나 직책별 급여 합계와 같이 데이터를 열로 변환하여 분석하는 경우에 주로 사용됩니다.
실무에서 구체적으로 어떤 상황에서 사용되는지 예측
- 부서별 예산 집계: 각 부서의 예산을 열 형태로 나타내어 전체 예산 대비 부서별 비중을 분석할 때 사용될 수 있습니다.
- 직책별 성과 분석: 회사 내 다양한 직책의 성과(예: 판매액, 프로젝트 성공률)를 분석할 때, 각 직책의 성과를 별도의 열로 나누어 비교 분석할 때 유용합니다.
예상 상황 예측
- 매출 데이터 분석: 특정 기간 동안 지역별 매출 데이터를 열로 나누어 분석할 때 사용될 수 있습니다.
- 인사 데이터 분석: 부서별로 직원 수나 평균 급여 데이터를 열로 변환하여 조직의 인력 현황을 시각적으로 분석할 때 유용합니다.
연습 문제
문제: 부서 번호가 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 코드
- 상품 카테고리별 매출 합계:
- 다양한 상품 카테고리별 매출을 분석하여 각 카테고리의 비중을 파악할 때 유용합니다.
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;
- 지역별 판매량 비교:
- 각 지역에서의 판매량을 분석하여 지역별 판매 전략을 수립할 때 유용합니다.
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;