Oracle
Oracle - 누적 합계를 해주는 SUM OVER
chaarles
2020. 6. 4. 11:01
다음과 같은 데이터가 있다.(ENO는 부서 번호, SAL은 월급)
ID ENO NAME SAL
---------- ---------- ---------- ----------
1 10 홍길동1 10
2 10 홍길동1 20
3 20 홍길동2 30
4 20 홍길동2 40
5 20 홍길동2 50
6 30 홍길동3 60
7 30 홍길동3 10
8 40 홍길동4 20
9 50 홍길동5 30
10 50 홍길동5 40
다음 3가지를 출력하려고 한다.
1. ID가 증가할수록 누적되는 월급 합계
2. 부서 별 ID 오름차순으로 누적되는 월급 합계
3. 전체 합계
ORACLE에 있는 SUM OVER 함수를 통해 다음과 같이 할 수 있다.
SELECT ID, ENO, NAME,SAL,
-- 1.
SUM(SAL) OVER (ORDER BY ID) AS "누적합계",
-- 2.
SUM(SAL) OVER (PARTITION BY ENO ORDER BY ID) AS "부서별 누적합계",
-- 3.
SUM(SAL) OVER () AS "전체 합계"
FROM TAB01
ORDER BY ID;
--OUTPUT
ID ENO NAME SAL 누적합계 부서별 누적합계 전체 합계
---------- ---------- ---------- ---------- ---------- ---------- ----------
1 10 홍길동1 10 10 10 310
2 10 홍길동1 20 30 30 310
3 20 홍길동2 30 60 30 310
4 20 홍길동2 40 100 70 310
5 20 홍길동2 50 150 120 310
6 30 홍길동3 60 210 60 310
7 30 홍길동3 10 220 70 310
8 40 홍길동4 20 240 20 310
9 50 홍길동5 30 270 30 310
10 50 홍길동5 40 310 70 310