SELECT DEPTNO , SUM(SAL)
FROM EMP e
GROUP BY DEPTNO;
GROUP BY로 그룹을 지어 그룹마다 집계함수를 적용 시킬 수 있다. 위의 상황에서 그룹 별 SAL 뿐만 아니라 전체
SAL을 구하고 싶다면 사용하는 것이 ROLLUP()이다.
ROLLUP 사용법
SELECT DECODE(DEPTNO, NULL, '전체합계', DEPTNO) , SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO) ;
위와 같이 사용하면 DEPTNO 별로 구룹을 지은 다음 그룹별로 SUM() 집계함수를 적용 시킨다. 모든 그룹에 적용 시켰다면 마지막에 DEPTNO는 NULL로 전체 집게를 구한다.
그렇다면 ROLLUP() 에 인자를 2개를 주면 어떻게 될까?
SELECT DECODE(DEPTNO, NULL, '부서 전체합계', DEPTNO) ,
DECODE(JOB, NULL, '직업 전체합계', JOB),
SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB) ;
결과는 위와 같이 나왔다. 이것이 의미하는 것은 부서번호와 직업이름을 하나의 그룹으로 본다는 것이다. 이렇게 부서별 직업에 대한 집계를 각 각 낸다음에 부서의 직업전제합계에 대한 집계를 내고 맨 마지막에 부서 전체합계를 내는 방식으로 실행이 된다.
인자로 오는 첫번째 컬럼과 두번째 컬럼을 그룹지어서 집계 후 첫번째 컬럼에 대한 집계, 다시 다음행에서 이를 반복하고 마지막에 전체집계 순으로 된다.
'데이터베이스' 카테고리의 다른 글
[데이터베이스] 인덱스 개념 (0) | 2023.07.06 |
---|---|
[데이터베이스] 서브쿼리 종류 (0) | 2023.07.05 |
[데이터베이스] 오라클 RONUM (0) | 2023.07.04 |
[데이터베이스] 오라클 WITH절 사용방법 (0) | 2023.07.03 |
[데이터베이스]INTERSECT 키워드, CROSS JOIN (0) | 2023.06.30 |