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

오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하면 손쉽게 합계와 소계를 구할 수 있습니다. 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 사용방법 (소계, 합계)

오라클에서 소계, 합계, 총계의 쿼리(SQL)를 작성할 때는 ROLLUP을 많이 사용한다. ROLLUP의 경우 나열된 컬럼의 단계별로 소계, 합계를 자동으로 집계를 한다. 그에 반해 GROUPING SETS는 여러 그룹핑 쿼

gent.tistory.com

 

[Oracle] CUBE 함수 사용법 (합계, 소계)

오라클에서 합계와 소계를 구하기 위해서는 ROLLUP 함수를 많이 사용한다. ROLLUP 함수는 소계와 합계를 순서에 맞게 반환하지만 CUBE 함수는 계산 가능한 모든 소계와 합계를 반환한다. 기본사용법

gent.tistory.com

 

[Oracle] ROLLUP 소계 제외하는 2가지 방법 (합계만)

오라클에서 ROLLUP 함수를 사용하여 소계, 합계를 구할 수 있다. 그러나 소계를 제외하고 합계만 표시하고 싶을 때는 다양한 방법이 있겠지만, ROLLUP 칼럼을 괄호로 묶어서 합계를 구하는 방법과 GR

gent.tistory.com

 

 

댓글

Designed by JB FACTORY