1. 핵심 원리
RATIO_TO_REPORT 함수는 SQL에서 특정 열의 값이 전체 값에서 차지하는 비율을 계산하는 함수입니다. 이 함수는 주어진 값이 전체에서 얼마나 큰 비중을 차지하는지를 계산하는 데 사용됩니다.
2. 실무에서 쓰이는 이유
실무에서 RATIO_TO_REPORT
는 다음과 같은 이유로 사용됩니다:
- 비율 분석: 특정 항목이 전체 데이터에서 차지하는 비중을 쉽게 계산할 수 있습니다.
- 데이터 비교: 개별 데이터를 전체 데이터와 비교하여 상대적 위치를 평가할 때 유용합니다.
3. 실무에서 구체적으로 사용되는 상황
RATIO_TO_REPORT
함수는 다음과 같은 상황에서 자주 사용됩니다:
- 부서별 성과 분석: 부서 내 직원의 급여가 부서 전체 급여에서 차지하는 비율을 계산할 때.
- 제품 매출 기여도: 특정 제품이 전체 매출에서 차지하는 비율을 계산하여 제품의 시장 기여도를 평가할 때.
예상 상황 예측:
- 예시 1: 특정 카테고리 내에서 각 제품이 전체 매출에서 차지하는 비율을 분석.
- 예시 2: 특정 지역 내에서 각 영업사원의 매출이 전체 매출에서 차지하는 비율을 평가.
4. 자주 사용되는 윈도우 방식 및 설명
RATIO_TO_REPORT
함수와 함께 자주 사용되는 윈도우 방식은 다음과 같습니다:
OVER()
- 설명: 전체 데이터 집합에 대한 비율을 계산할 때 사용됩니다.
- 예시: 부서 내 모든 직원의 급여가 전체 부서에서 차지하는 비율을 계산.
- 사용 예시:
sql SELECT empno, ename, sal, RATIO_TO_REPORT(sal) OVER () AS 비율 FROM emp WHERE deptno = 20;
PARTITION BY
- 설명: 데이터를 특정 그룹으로 나누어 각 그룹 내에서 비율을 계산할 때 사용됩니다.
- 예시: 부서별로 직원 급여가 해당 부서 전체 급여에서 차지하는 비율을 계산.
- 사용 예시:
sql SELECT deptno, empno, ename, sal, RATIO_TO_REPORT(sal) OVER (PARTITION BY deptno) AS 부서별비율 FROM emp;
5. 연습 문제
문제 1:
다음의 테이블에서 각 제품이 전체 매출에서 차지하는 비율을 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
sales
- 열:
product_id
,product_name
,revenue
문제 2:
특정 부서에서 각 직원의 월급이 전체 월급에서 차지하는 비율을 계산하는 SQL 쿼리를 작성하시오.
6. 연습 문제 해답
해답 1:
SELECT product_id, product_name, revenue,
RATIO_TO_REPORT(revenue) OVER () AS revenue_ratio
FROM sales;
해답 2:
SELECT empno, ename, sal,
RATIO_TO_REPORT(sal) OVER () AS salary_ratio
FROM emp
WHERE deptno = 10;
7. 응용 문제
문제 1:
부서별로 각 직원의 성과가 부서 전체 성과에서 차지하는 비율을 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
performance
- 열:
empno
,ename
,deptno
,score
문제 2:
각 분기별로 매출이 전체 분기 매출에서 차지하는 비율을 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
quarterly_sales
- 열:
quarter
,sales
8. 응용 문제 해답
해답 1:
SELECT empno, ename, deptno, score,
RATIO_TO_REPORT(score) OVER (PARTITION BY deptno) AS score_ratio
FROM performance;
해답 2:
SELECT quarter, sales,
RATIO_TO_REPORT(sales) OVER () AS sales_ratio
FROM quarterly_sales;
9. 전자상거래 업계에서의 사용 예시
사용될 수 있는 경우 예측:
- 카테고리별 매출 비율 분석: 전자상거래에서 각 카테고리가 전체 매출에서 차지하는 비율을 분석하여 마케팅 전략을 세울 수 있습니다.
- 고객별 기여도 평가: 특정 기간 동안 각 고객의 구매 금액이 전체 매출에서 차지하는 비율을 분석하여 VIP 고객을 식별할 수 있습니다.
예상 상황 문제:
- 특정 제품 카테고리에서 각 제품의 매출이 전체 카테고리 매출에서 차지하는 비율을 계산하는 SQL 쿼리를 작성하시오.
- 특정 기간 동안 고객별 구매 금액이 전체 매출에서 차지하는 비율을 계산하는 SQL 쿼리를 작성하시오.
SQL 코드 및 시각적 예시
문제 1 SQL 코드:
SELECT product_id, product_name, category_id, revenue,
RATIO_TO_REPORT(revenue) OVER (PARTITION BY category_id) AS revenue_ratio
FROM product_sales;
예시 테이블:
product_id | product_name | category_id | revenue | revenue_ratio |
---|---|---|---|---|
101 | Laptop | 1 | 5000 | 0.5 |
102 | Smartphone | 1 | 5000 | 0.5 |
201 | T-shirt | 2 | 2000 | 1.0 |
문제 2 SQL 코드:
SELECT customer_id, purchase_amount,
RATIO_TO_REPORT(purchase_amount) OVER () AS purchase_ratio
FROM customer_purchases
WHERE purchase_date BETWEEN '2024-01-01' AND '2024-12-31';
예시 테이블:
customer_id | purchase_amount | purchase_ratio |
---|---|---|
001 | 1000 | 0.2 |
002 | 4000 | 0.8 |