[Oracle] 오라클 ROLLUP 합계, 소계 구하기 (예제 포함)

오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하여 손쉽게 합계와 소계를 구할 수 있다.

 

1. GROUP BY 컬럼이 하나인 경우

- GROUP BY 절에 ROLLUP 함수를 추가한 후 그룹핑 컴럼을 인자로 넣는다

 

SELECT job
     , SUM(sal) 
  FROM emp
 GROUP BY ROLLUP(job)

 

 

2. GROUP BY 컬럼이 두 개 이상인 경우

- 합계 및 소계 까지 계산되어 표시된다

 

SELECT job
     , deptno
     , SUM(sal) 
  FROM emp
 GROUP BY ROLLUP(job, deptno)

 

 

3. GROUP BY 컬럼이 두 개 이상인 경우 합계만 표시하고 싶을 때

- HAVING 절에 GROUPING_ID 함수를 이용하여 소계 값을 제외할 수 있다

 

SELECT job
     , deptno
     , SUM(sal) 
  FROM emp
 GROUP BY ROLLUP(job, deptno)
HAVING GROUPING_ID(job, deptno) IN (0, 3) 

 

 

[Oracle] 오라클 GROUPING, GROUPING_ID 함수 사용법

 

4. ROLLUP 컬럼에 합계 표시하기

- DECODE 함수와 GROUPING 함수를 이용하여 합계 컬럼 값을 합계로 표시할 수 있다

- GROUPING 함수는 합계, 소계 행의 컬럼인 경우 1을 반환하고 그 외는 0을 반환한다.

 

SELECT DECODE(GROUPING(job), 1, '합계', job) AS job
     , deptno
     , SUM(sal) AS sal
  FROM emp
 GROUP BY ROLLUP(job, deptno)
HAVING GROUPING_ID(job, deptno) IN (0, 3)

 

 

예제쿼리(테이블포함).txt
0.00MB

 

다른 방법의 소계, 합계 구하는 방법은 아래를 참고하면 된다.

 

[Oracle] 오라클 GROUPING SETS 사용법 (합계, 소계)
[Oracle] 오라클 CUBE 함수 사용법 (합계, 소계)

 

 

댓글

Designed by JB FACTORY