데이터베이스/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을 기준으로 파티셔닝을 하여 날짜 기준으로 누적합을 구하게 되면 결과는 다음과 같다.