다음과 같은 데이터가 있다.(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
'Oracle' 카테고리의 다른 글
Oracle - View 객체 (0) | 2020.06.04 |
---|---|
Oracle 테이블의 Column 추가·수정·삭제·이름 변경 (0) | 2020.06.04 |
Oracle - 중복된 데이터가 2개 이상일 경우 (0) | 2020.06.04 |
Oracle - DML(데이터 조작: 추가·수정·삭제) (0) | 2020.06.03 |
Oracle - SubQuery (0) | 2020.06.03 |