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
반응형
'TIL - 프로그래밍 > SQL' 카테고리의 다른 글
[프로그래머스] LV4. 입양 시각 구하기(2) - MySQL (0) | 2023.07.11 |
---|---|
[리트코드] 185. Department Top Three Salaries - MySQL (0) | 2023.07.09 |
[SQL] 윈도우 함수 (Window Functions) (0) | 2023.07.09 |
[SQL] LIMIT / OFFSET (0) | 2023.07.08 |
[리트코드] 177. Nth Highest Salary - MySQL (0) | 2023.07.08 |
댓글