데이터베이스/PostgreSQL
[PostgreSQL] SUM OVER 사용하여 누적 합계 구하기
올리버
2021. 11. 29. 15:24
SUM OVER 집계 함수는 윈도우 함수(Window Function) 중 하나이다.
집계 함수와 차이점은 그룹화되지 않고 행들의 정체성을 유지하여 나타낸다.
사용 방법
SELECT 컬럼1
, 컬럼2
, SUM(누적할 컬럼명) OVER(PARTITION BY 그룹화할 컬럼명 ORDER BY 정렬할 컬럼명 정렬 방식)
FROM [테이블 명]
아래 테이블은 예시 테이블이다.

1. 총합계 구하기
현재 article을 기준으로 행마다 총합을 넣고 싶다고 가정해본다면, 쿼리는 다음과 같다.
SELECT article
, amount
, reg_date
, reg_time
, sum(amount) over(partition by article) as total --파티셔닝하여 총합 구하기
FROM PAYMENT_HISTORY
article을 기준으로 파티셔닝을 하여 총합을 구하게 되면 결과는 다음과 같다.

2. 누적합계 구하기
현재 article을 기준으로 행마다 날짜 기준으로 누적 합을 넣고 싶다고 가정해본다면, 쿼리는 다음과 같다.
SELECT article
, amount
, reg_date
, reg_time
, sum(amount) over(partition by article order by reg_date,reg_time) as total --누적합 구하기
FROM PAYMENT_HISTORY
article을 기준으로 파티셔닝을 하여 날짜 기준으로 누적합을 구하게 되면 결과는 다음과 같다.
