1. 누적합계를 구해보자. 기준으로 정렬하고 기준이 증가함에 따라, 그 기준까지의 누적 합계를 구해보자
2. 샘플 데이터를 통해 알아보자. 온라인 매출 샘플 데이터를 아래와 같이 만든다.
3. ID를 기준으로 누적합계를 구해보자.
- 자신의 id보다 작은 id를 가지는 데이터를 JOIN해야 한다. SELF JOIN을 하되 자신의 id보다 작은 id를 가지는 행을 결합시킨다.
위 로직을 쿼리로 표현하면 아래와 같다.
아래와 같이 자신의 id보다 작은 id를 가지는 행들이 결합되어 있는 것을 확인할 수 있다.
4. 자신의 id를 기준으로 결합시킨 행의 sales를 모두 더한다.
아래와 같이 쿼리를 작성하면 된다.
아래와 같이 누적 합계가 잘 산출된 것을 확인할 수 있다.
끝.
2. 샘플 데이터를 통해 알아보자. 온라인 매출 샘플 데이터를 아래와 같이 만든다.
1 2 3 4 5 6 7 | CREATE TABLE sales_online(id integer, sales integer); INSERT INTO sales_online VALUES(1, 100); INSERT INTO sales_online VALUES(5, 170); INSERT INTO sales_online VALUES(4, 250); INSERT INTO sales_online VALUES(2, 170); INSERT INTO sales_online VALUES(3, 250); |
3. ID를 기준으로 누적합계를 구해보자.
- 자신의 id보다 작은 id를 가지는 데이터를 JOIN해야 한다. SELF JOIN을 하되 자신의 id보다 작은 id를 가지는 행을 결합시킨다.
위 로직을 쿼리로 표현하면 아래와 같다.
1 2 3 4 5 6 | SELECT * FROM sales_online a JOIN sales_online b ON a.id >= b.id ORDER BY a.id, b.id ; |
아래와 같이 자신의 id보다 작은 id를 가지는 행들이 결합되어 있는 것을 확인할 수 있다.
4. 자신의 id를 기준으로 결합시킨 행의 sales를 모두 더한다.
아래와 같이 쿼리를 작성하면 된다.
1 2 3 4 5 6 7 | SELECT a.id, a.sales, sum(b.sales) as cul_sum FROM sales_online a JOIN sales_online b ON a.id >= b.id GROUP BY 1, 2 ORDER BY 1 ; |
아래와 같이 누적 합계가 잘 산출된 것을 확인할 수 있다.
끝.
댓글
댓글 쓰기