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를 활용하여 특정 그룹별 누적 계산 가능
✅ 월별 매출, 부서별 연봉 계산, 고객별 구매 합계 등 다양한 상황에서 유용하게 활용 가능
'기획자가 알아야 할 IT지식 > 기획자가 알아야 할 SQL' 카테고리의 다른 글
24강. 그룹을 나누어 순위를 매기기 (NTILE 함수) (0) | 2025.03.24 |
---|---|
23강. 순위 함수 사용하기 (RANK, DENSE_RANK) (0) | 2025.03.24 |
22강. SQL에서 합계 및 개수 구하기 (SUM, COUNT) (0) | 2025.03.24 |
21강. SQL에서 최대, 최소, 평균값 구하기 (MAX, MIN, AVG) (0) | 2025.03.23 |
20강. 조건에 따라 다른 값을 반환하는 CASE WHEN 문 (0) | 2025.03.23 |