[Oracle] ROLLUP 소계 제외하는 2가지 방법 (합계만)
- 데이터베이스/오라클
- 2023. 7. 26.
오라클에서 ROLLUP 함수를 사용하여 소계, 합계를 구할 수 있다. 그러나 소계를 제외하고 합계만 표시하고 싶을 때는 다양한 방법이 있겠지만, ROLLUP 칼럼을 괄호로 묶어서 합계를 구하는 방법과 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 함수에 대해서 조금 더 알고 싶으면 아래의 포스팅을 참고하면 된다.