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

오라클에서 ROLLUP 함수를 사용하여 소계, 합계를 구할 수 있다. 그러나 소계를 제외하고 합계만 표시하고 싶을 때는 다양한 방법이 있겠지만,  ROLLUP 칼럼을 괄호로 묶어서 합계를 구하는 방법과 GROUPING_ID 함수를 사용하여 필요한 행만 조회되도록 조건을 부여하는 방법을 사용하면 간단하게 소계를 제외할 수 있다.

 

ROLLUP 소계 제외 방법

목차
  1. 괄호( ( ) )를 사용하여 합계만 표시하는 방법
  2. GROUPING_ID 함수를 사용하여 소계를 제외하는 방법

 

괄호( ( ) )를 사용하여 합계만 표시하는 방법

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

 

 

ROLLUP 칼럼 전체를 괄호로 한 번 더 묶으면 총합계만 표시된다.

그룹 칼럼이 많을 경우 괄호를 사용하여 원하는 종류의 소계 합계만 표시되도록 할 수 있다.

 

GROUPING_ID 함수를 사용하여 소계를 제외하는 방법

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

 

 

GROUPING_ID 함수를 사용하면 입력된 칼럼의 결과에 NULL 값의 개수에 따라서 정수를 반환한다.

반환된 정수 값을 사용하여 HAVING 절에서 조건을 부여하면 원하는 종류의 행만 표시할 수 있다.

 

GROUPING_ID 함수에 대해서 조금 더 알고 싶으면 아래의 포스팅을 참고하면 된다.

 

[Oracle] GROUPING, GROUPING_ID 함수 사용법

오라클의 GROUPING, GROUPING_ID 함수는 소계와 합계를 집계할 때 사용하는 ROLLUP, CUBE, GROUPING SETS 함수와 함계 사용된다. 소계와 합계로 집계되어 출력된 행을 구분할 때 사용한다. 기본 사용법 GROUPING

gent.tistory.com

 

[Oracle] 오라클 ROLLUP 함수 사용법

오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하여 손쉽게 합계와 소계를 구할 수 있다. 1. GROUP BY 컬럼이 하나인 경우 - GROUP BY 절에 ROLLUP 함수를 추가한 후 그룹핑 컴럼을 인자로 넣는다 SELECT job , SUM(

gent.tistory.com

 

댓글

Designed by JB FACTORY