1. 핵심 원리
CUBE는 SQL에서 다차원 집계 결과를 생성하는 데 사용되는 함수입니다. GROUP BY
와 함께 사용되며, 모든 가능한 조합에 대한 집계 결과와 함께 전체 합계도 계산합니다. 이를 통해 데이터를 다양한 차원에서 분석할 수 있습니다.
2. 실무에서 쓰이는 이유
실무에서 CUBE
함수는 다음과 같은 이유로 사용됩니다:
- 다차원 데이터 분석: 다양한 조합의 데이터를 한 번에 집계할 수 있어, 여러 차원에서 데이터를 분석할 때 유용합니다.
- 복합 보고서 생성: 부서별, 직책별, 그리고 전체 데이터를 포함한 보고서를 생성할 때 유용합니다.
3. 실무에서 구체적으로 사용되는 상황
CUBE
함수는 다음과 같은 상황에서 자주 사용됩니다:
- 매출 분석: 지역별, 제품별, 그리고 전체 매출을 한 번에 계산하여 다양한 차원에서 매출을 분석할 때.
- 비용 분석: 부서별, 프로젝트별, 그리고 전체 비용을 한 번에 계산하여 비용 데이터를 다차원적으로 분석할 때.
예상 상황 예측:
- 예시 1: 각 제품 카테고리와 제품, 그리고 전체 카테고리의 매출을 계산하여 전략을 수립할 때.
- 예시 2: 각 부서와 팀, 그리고 전체 조직의 성과를 함께 분석하여 기여도를 평가할 때.
4. 자주 사용되는 윈도우 방식 및 설명
CUBE 함수는 GROUP BY
와 결합하여 사용되며, 모든 열 조합에 대해 집계 결과를 생성합니다. 이 함수는 특정 열에 대한 부분 합계를 자동으로 계산하며, 이를 통해 다차원 분석이 가능합니다.
GROUP BY CUBE(column1, column2, ...)
- 설명: 지정된 열들에 대해 모든 가능한 조합과 전체 합계를 계산합니다. 열의 순서에 따라 집계의 우선순위가 정해지며, 각 단계별로 요약된 결과를 제공합니다.
- 사용 예시:
sql SELECT deptno, job, SUM(sal) FROM emp GROUP BY CUBE(deptno, job);
GROUP BY
와의 비교
- 설명: 일반적인
GROUP BY
와CUBE
의 차이는CUBE
가 모든 조합에 대한 집계를 수행하는 반면, 일반적인GROUP BY
는 단일 조합에 대한 집계만 수행한다는 점입니다. - 사용 예시:
sql SELECT deptno, job, SUM(sal) FROM emp GROUP BY deptno, job;
5. 연습 문제
문제 1:
다음의 테이블에서 부서별, 직책별, 그리고 전체 직원의 급여 합계를 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
employee
- 열:
deptno
,job
,salary
문제 2:
각 제품 카테고리별, 제품별, 그리고 전체 매출 합계를 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
product_sales
- 열:
category_id
,product_id
,sales
6. 연습 문제 해답
해답 1:
SELECT deptno, job, SUM(salary) AS total_salary
FROM employee
GROUP BY CUBE(deptno, job);
해답 2:
SELECT category_id, product_id, SUM(sales) AS total_sales
FROM product_sales
GROUP BY CUBE(category_id, product_id);
7. 응용 문제
문제 1:
부서별, 프로젝트별, 그리고 전체 부서의 프로젝트 비용 합계를 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
project_costs
- 열:
deptno
,project_id
,cost
문제 2:
각 지역별, 각 지역 내의 지점별, 그리고 전체 지점의 매출 합계를 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
branch_sales
- 열:
region
,branch
,revenue
8. 응용 문제 해답
해답 1:
SELECT deptno, project_id, SUM(cost) AS total_cost
FROM project_costs
GROUP BY CUBE(deptno, project_id);
해답 2:
SELECT region, branch, SUM(revenue) AS total_revenue
FROM branch_sales
GROUP BY CUBE(region, branch);
9. 전자상거래 업계에서의 사용 예시
사용될 수 있는 경우 예측:
- 카테고리 및 전체 매출 분석: 각 카테고리별, 상품별 매출을 분석하면서 전체 매출을 한 번에 계산.
- 고객 그룹 분석: 각 고객 그룹별, 세분화된 고객 그룹별 매출을 계산하면서 전체 고객 매출을 분석.
예상 상황 문제:
- 각 상품 카테고리별, 각 상품별, 그리고 전체 상품의 매출 합계를 계산하는 SQL 쿼리를 작성하시오.
- 각 고객 세그먼트별, 각 고객별, 그리고 전체 고객의 구매 금액 합계를 계산하는 SQL 쿼리를 작성하시오.
SQL 코드 및 시각적 예시
문제 1 SQL 코드:
SELECT category_id, product_id, SUM(sales) AS total_sales
FROM product_sales
GROUP BY CUBE(category_id, product_id);
예시 테이블:
category_id | product_id | total_sales |
---|---|---|
1 | 101 | 5000 |
1 | 102 | 7000 |
1 | NULL | 12000 |
2 | 201 | 8000 |
2 | NULL | 8000 |
NULL | NULL | 20000 |
문제 2 SQL 코드:
SELECT segment_id, customer_id, SUM(purchase_amount) AS total_purchases
FROM customer_purchases
GROUP BY CUBE(segment_id, customer_id);
예시 테이블:
segment_id | customer_id | total_purchases |
---|---|---|
1 | 1001 | 3000 |
1 | 1002 | 5000 |
1 | NULL | 8000 |
2 | 2001 | 2000 |
2 | NULL | 2000 |
NULL | NULL | 10000 |