집계 함수(ROLLUP, CUBE) - Oracle SQL Developer

coldZero·2023년 11월 22일
0

OracleSQLDeveloper

목록 보기
2/4

집계함수(ROLLUP, CUBE)

그룹 별 산출한 결과 값의 집계를 계산하는 함수
(GROUP BY절에서만 작성)

ROLLUP 함수

  1. 그룹별로 중간 집계 처리를 하는 함수
  2. 그룹별로 묶여진 값에 대한 '중간 집계'와 '총 집계'를 계산하여 자동으로 추가하는 함수
  3. 인자로 전달받은 그룹중에서 가장 먼저 지정한 그룹별 합계와 총 합계를 구하는 함수
<예시1>
EMPLOYEE 테이블에서 각 부서에 소속된 직급 별
급여합, 부서 별 급여 합, 전체 직원 급여 총합 조회

SELECT DEPT_CODE, JOB_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY ROLLUP(JOB_CODE, DEPT_CODE)
ORDER BY 1;

(질의 결과)
D1	J7	1380000
D1	J6	6440000
D2	J4	6520000
	.
    .
    .
	J2	9700000
		70096240
	J1	8000000

CUBE 함수

  1. 그룹별 산출한 결과를 집계하는 함수
  2. 그룹으로 지정된 모든 그룹에 대한 집계와 총 합계를 구하는 함수
<예시2>
EMPLOYEE 테이블에서 각 부서마다 직급별
급여함, 부서 전체 급여 합

SELECT DEPT_CODE, JOB_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY CUBE(DEPT_CODE, JOB_CODE)
ORDER BY 1;

(질의 결과)
D1	J6	6440000
D1	J7	1380000
D1		7820000
.
.
.
	J7	8070000
		5210000
		70096240
----------------------------------------------
위 결과는 ROLLUP 결과<예시1>에 아래 두 SQL문의 결과가
추가된 것이다.

SELECT JOB_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY JOB_CODE
ORDER BY JOB_CODE;

SELECT SUM(SALARY)
FROM EMPLOYEE
WHERE DEPT_CODE IS NULL;
profile
교육생

0개의 댓글