SUM, MIN, MAX, AVG, COUNT등의 집계 함수도 분석함수로 사용할 수 있다.
SUM (누적합계)
아래는 사원의 전체급여 합계(all_sum), 부서별 급여 합계(dept_sum), 부서별로 누적 합계(nujuk_sum)를 조회하는 예이다.
SELECT empno, ename, deptno, SUM(sal) OVER () all_sum, SUM(sal) OVER (PARTITION BY deptno) dept_sum, SUM(sal) OVER (PARTITION BY deptno ORDER BY empno) nujuk_sum FROM emp; EMPNO ENAME DEPTNO ALL_SUM DEPT_SUM NUJUK_SUM ------ ------- ---------- ---------- ---------- ---------- 7782 CLARK 10 29025 8750 2450 7839 KING 10 29025 8750 7450 7934 MILLER 10 29025 8750 8750 7369 SMITH 20 29025 10875 800 7566 JONES 20 29025 10875 3775 7788 SCOTT 20 29025 10875 6775 7876 ADAMS 20 29025 10875 7875 7902 FORD 20 29025 10875 10875 7499 ALLEN 30 29025 9400 1600 7521 WARD 30 29025 9400 2850 7654 MARTIN 30 29025 9400 4100 7698 BLAKE 30 29025 9400 6950 7844 TURNER 30 29025 9400 8450 7900 JAMES 30 29025 9400 9400
- – ALL_SUM : PARTITION BY절과 ORDER BY절이 생략되어 전체 급여 합계를 계산한다.
- – DEPT_SUM : PARTITION BY절에 deptno를 사용하여 부서별 급여 합계를 계산한다.
- – NUJUK_SUM : 부서별로 구분하고, empno로 ORDER BY절을 사용하였다. 사원번호 별로 급여 합계가 누적되어 계산되는 것을 확인 할 수 있다.
분석함수 OVER절 안에서 ORDER BY절을 사용하면 ORDER BY 절의 컬럼을 기준으로 누적되어 계산 된다는 것을 확인 할 수 있다.