1. 핵심 원리
SUM OVER 함수는 윈도우 함수의 하나로, 특정 기준에 따라 누적합을 계산할 수 있습니다. 이 함수는 데이터를 그룹화하지 않고도, 연속적인 행의 누적합을 구할 수 있어 매우 유용합니다.
2. 실무에서 쓰이는 이유
실무에서는 다음과 같은 이유로 SUM OVER 함수가 사용됩니다:
- 순차적인 데이터 분석: 시간 순서나 특정 정렬 기준에 따른 누적합을 계산할 때 유용합니다.
- 데이터 시각화: 누적 데이터를 시각화하여 트렌드를 파악하거나, 특정 시점까지의 누적 성과를 분석할 때 유용합니다.
3. 실무에서 구체적으로 사용되는 상황
SUM OVER 함수는 다음과 같은 상황에서 자주 사용됩니다:
- 매출 누적 합계: 월별 매출의 누적 합계를 계산하여 특정 기간 동안의 매출 추이를 분석할 때.
- 프로젝트 비용 관리: 프로젝트 진행 상황에 따라 발생한 비용의 누적합을 계산할 때.
예상 상황 예측:
- 예시 1: 특정 기간 동안의 일별 매출 누적합을 계산하여 일간 성장률을 분석.
- 예시 2: 특정 제품군의 판매량 누적합을 계산하여 시장 점유율 추이를 파악.
4. 연습 문제
문제 1:
다음의 테이블에서 사원별 월급의 누적합을 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
employee
- 열:
emp_id
,name
,salary
문제 2:
특정 기간 동안 발생한 주문의 누적 금액을 계산하는 SQL 쿼리를 작성하시오.
5. 연습 문제 해답
해답 1:
SELECT emp_id, name, salary, SUM(salary) OVER (ORDER BY emp_id) AS cumulative_salary
FROM employee;
해답 2:
SELECT order_id, order_date, amount, SUM(amount) OVER (ORDER BY order_date) AS cumulative_amount
FROM orders;
6. 응용 문제
문제 1:
월별 판매 데이터에서 각 달의 누적 매출을 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
monthly_sales
- 열:
month
,sales
문제 2:
프로젝트별 비용 데이터를 사용하여, 프로젝트 비용의 누적합을 계산하는 SQL 쿼리를 작성하시오.
- 테이블:
project_costs
- 열:
project_id
,cost
7. 응용 문제 해답
해답 1:
SELECT month, sales, SUM(sales) OVER (ORDER BY month) AS cumulative_sales
FROM monthly_sales;
해답 2:
SELECT project_id, cost, SUM(cost) OVER (ORDER BY project_id) AS cumulative_cost
FROM project_costs;
8. 전자상거래 업계에서의 사용 예시
사용될 수 있는 경우 예측:
- 월별 매출 누적 합계 분석: 전자상거래 업체에서 월별 매출의 누적합을 계산하여, 연간 성장을 분석.
- 특정 제품군의 누적 판매량 계산: 특정 카테고리나 제품군의 누적 판매량을 계산하여, 인기 상품을 분석.
예상 상황 문제:
- 특정 카테고리에서 매월 발생한 판매 금액의 누적합을 계산하는 SQL 쿼리를 작성하시오.
- 특정 기간 동안 고객별 구매 금액의 누적합을 계산하는 SQL 쿼리를 작성하시오.
SQL 코드 및 시각적 예시
문제 1 SQL 코드:
SELECT category, month, sales, SUM(sales) OVER (ORDER BY month) AS cumulative_sales
FROM category_sales
WHERE category = 'Electronics';
예시 테이블:
category | month | sales | cumulative_sales |
---|---|---|---|
Electronics | Jan | 1000 | 1000 |
Electronics | Feb | 1500 | 2500 |
Electronics | Mar | 1200 | 3700 |
문제 2 SQL 코드:
SELECT customer_id, purchase_date, amount, SUM(amount) OVER (ORDER BY purchase_date) AS cumulative_amount
FROM customer_purchases
WHERE purchase_date BETWEEN '2024-01-01' AND '2024-12-31';
예시 테이블:
customer_id | purchase_date | amount | cumulative_amount |
---|---|---|---|
001 | 2024-01-05 | 200 | 200 |
001 | 2024-02-10 | 300 | 500 |
001 | 2024-03-15 | 150 | 650 |