SQL SUM OVER 함수로 누적합 계산

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. 전자상거래 업계에서의 사용 예시

사용될 수 있는 경우 예측:

  • 월별 매출 누적 합계 분석: 전자상거래 업체에서 월별 매출의 누적합을 계산하여, 연간 성장을 분석.
  • 특정 제품군의 누적 판매량 계산: 특정 카테고리나 제품군의 누적 판매량을 계산하여, 인기 상품을 분석.

예상 상황 문제:

  1. 특정 카테고리에서 매월 발생한 판매 금액의 누적합을 계산하는 SQL 쿼리를 작성하시오.
  2. 특정 기간 동안 고객별 구매 금액의 누적합을 계산하는 SQL 쿼리를 작성하시오.

SQL 코드 및 시각적 예시

문제 1 SQL 코드:

SELECT category, month, sales, SUM(sales) OVER (ORDER BY month) AS cumulative_sales
FROM category_sales
WHERE category = 'Electronics';
예시 테이블:
categorymonthsalescumulative_sales
ElectronicsJan10001000
ElectronicsFeb15002500
ElectronicsMar12003700

문제 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_idpurchase_dateamountcumulative_amount
0012024-01-05200200
0012024-02-10300500
0012024-03-15150650

Posts created 411

Related Posts

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

Back To Top