본문 바로가기
기획자가 알아야 할 IT지식/기획자가 알아야 할 SQL

25강. 누적 합계 구하기 (SUM OVER 함수)

by 일잘러로 살기 2025. 3. 24.

SQL의 SUM() OVER() 함수는 행 단위로 누적 합계를 구할 때 사용됩니다.
예를 들어, 월별 매출 데이터를 누적하여 계산하거나, 특정 그룹 내에서 점진적인 합계를 구하는 경우에 유용하게 활용됩니다.


✅ 1. SUM OVER() 함수 개념

📌 기본 문법

SELECT column_name,
       SUM(집계할 컬럼) OVER (PARTITION BY 그룹 컬럼 ORDER BY 정렬 컬럼) AS 누적합계
  FROM table_name;


✅ 2. SUM OVER() 예제

📌 예제 1: 월별 매출 누적 합계 구하기

SELECT sales_month, sales_amount,
       SUM(sales_amount) OVER (ORDER BY sales_month) AS cumulative_sales
  FROM sales_data;


📌 실행 결과

설명

  • sales_month(월별) 기준으로 sales_amount(매출액)의 누적 합계 계산
  • ORDER BY sales_month을 사용하여 월이 지날수록 합계가 누적

📌 예제 2: 부서별 직원 연봉의 누적 합계 구하기

SELECT department, employee_name, salary,
       SUM(salary) OVER (PARTITION BY department ORDER BY salary DESC) AS department_cumulative_salary
  FROM employees;


📌 실행 결과

설명

  • department(부서)별로 salary(연봉)의 누적 합계 계산
  • 같은 부서 내에서 높은 연봉 순으로 정렬하여 누적 합계 증가
  • PARTITION BY department를 사용하여 부서별로 누적 합계를 구분

✅ 3. SUM OVER() vs SUM() 차이점

📌 SUM()은 전체 합계를 구하고, SUM() OVER()는 행마다 누적합을 구하는 차이가 있음

 
SELECT department, SUM(salary)
  FROM employees
GROUP BY department
SELECT department, employee_name, salary,
       SUM(salary) OVER (PARTITION BY department ORDER BY salary) AS cumulative_salary
  FROM employees;

✅ 4. SUM OVER() 정리

✅ SUM OVER()는 누적 합계를 구할 때 필수적인 함수
ORDER BY를 사용하여 누적되는 기준을 설정 가능
PARTITION BY를 활용하여 특정 그룹별 누적 계산 가능
월별 매출, 부서별 연봉 계산, 고객별 구매 합계 등 다양한 상황에서 유용하게 활용 가능