본문 바로가기
TIL - 프로그래밍/SQL

[SQL] 누적합 구하는 3가지 방법

by chaemj97 2023. 7. 9.
728x90

각 id 별 kg의 누적합 구하기

1. 윈도우 함수를 이용한 누적합

SELECT Id
     , Name
     , Kg
     , Line
     , SUM(Kg) OVER (PARTITION BY Id ORDER BY Line) AS CumSum
FROM Elevator;

 

2. 셀프 조인을 이용한 누적합

  • Id가 같고 나보다 Line 작은 것으로 JOIN
    • 아래 표에서 같은 색끼리 무게를 합하면 누적합이 된다.

SELECT e1.Id
     , e1.Name
     , e1.Kg
     , e1.Line
     , SUM(e2.kg) AS CumSum
FROM Elevator AS e1
	INNER JOIN Elevator AS e2
    	ON e1.Id = e2.Id AND e1.Line >= e2.Line
-- 컬럼명 대신 컬럼 순서를 적어도 된다.
GROUP BY 1,2,3,4;

 

3. 서브쿼리를 이용한 누적합

  • e1.Line이 1이면 Kg 합은 70

  • e1.Line이 2이면 Kg 합은 161

  • e1.Line이 3이면 Kg 합은 220

SELECT e1.Id
     , e1.Name
     , e1.Kg
     , e1.Line
     , (SELECT SUM(e2.Kg)
     	FROM Elevator AS e2
        WHERE e1.Id = e2.Id AND e1.Line >= e2.Line) AS CumSum
FROM Elevator AS e1

 

 

728x90
반응형

댓글