Where The Streets Have No Name
ROLLUP operator 본문
|
| www.oracleclub.com | ◈ ROLLUP operator
- ROLLUP구문은 GROUP BY절과 같이 사용 되며, GROUP BY절에 의해서 그룹 지어진 집합결과에 대해서 좀 더 상세한 정보를 반환하는 기능을 수행합니다.
- SELECT절에 ROLLUP을 사용함으로써 보통의 select된 데이터와 그 데이터의 총계를 구할 수 있습니다.
※ 우선 아주 간단한 예제부터 살펴 보겠습니다. (scott유저의 emp테이블을 가지고 테스트 했습니다.)
-- Group By를 사용해서 직업별로 급여 합계를 구하는 예제 입니다.
SELECT job, SUM(sal) FROM emp GROUP BY job
JOB SUM(SAL) ---------- ---------- ANALYST 600 CLERK 3200 MANAGER 33925 PRESIDENT 5000 SALESMAN 4000
-- 아래 SQL문은 위의 예제에 ROLLUP구문을 사용해서 직업별로 급여 합계를 구하고 총계를 구하는 예제 입니다.
SELECT job, SUM(sal) FROM emp GROUP BY ROLLUP(job)
JOB SUM(SAL ---------- ---------- ANALYST 6000 CLERK 3200 MANAGER 33925 PRESIDENT 5000 SALESMAN 4000 52125 --> 급여 합계에 대한 총계가 추가 되었습니다.
|
우선 간단하게 ROLLUP Operator의 예제를 살펴보았습니다. 조금더 복잡한(?) 예제를 하나더 해보면은요..
-- 부서의 직업별로 인원수와 급여 합계를 구하는 예제를 하나더 해보겠습니다.
-- 일반적인 Group By절을 사용해서 SQL문을 구현해보면은요.. 아래와 같이 하면 되겠죠..
SELECT b.dname, a.job, SUM(a.sal) sal, COUNT(a.empno) emp_count FROM emp a, dept b WHERE a.deptno = b.deptno GROUP BY b.dname, a.job
DNAME JOB SAL EMP_COUNT ---------- ---------- ---------- ---------- ACCOUNTING CLERK 1300 1 ACCOUNTING MANAGER 2450 1 ACCOUNTING PRESIDENT 5000 1 RESEARCH ANALYST 6000 2 RESEARCH CLERK 1900 2 RESEARCH MANAGER 2975 1 SALES MANAGER 28500 1 SALES SALESMAN 4000 3
-- 결과를 보면은요.. 부서별로 인원이 몇명이고, 또 급여합계가 얼마가 되는지 한눈에 보이지 않죠... 일일이 부서에 해당하는 직업별 급여와 사원수를 일일이 더해야 되죠..
-- 이런 경우 ROLLUP Operator를 적용해서 구현을 하면은 부서별 급여합계와 사원 총수를 쉽게 볼 수 있습니다...
SELECT b.dname, a.job, SUM(a.sal) sal, COUNT(a.empno) emp_count FROM emp a, dept b WHERE a.deptno = b.deptno GROUP BY ROLLUP(b.dname, a.job)
DNAME JOB SAL EMP_COUNT ---------- ---------- ---------- ---------- ACCOUNTING CLERK 1300 1 ACCOUNTING MANAGER 2450 1 ACCOUNTING PRESIDENT 5000 1 ACCOUNTING 8750 3 --> ACCOUNTING 부서의 급여합계와 전체 사원수.. RESEARCH ANALYST 6000 2 RESEARCH CLERK 1900 2 RESEARCH MANAGER 2975 1 RESEARCH 10875 5 --> RESEARCH 부서의 급여합계와 전체 사원수.. SALES MANAGER 28500 1 SALES SALESMAN 4000 3 SALES 32500 4 --> SALES부서의 급여합계와 전체 사원수.. 52125 12 -> 전체 급여 합계와 전체 사원수
위와 같이 ROLLUP Operator을 일반적인 누적에 대한 총계를 구할때 사용하면 아주 편리하게 사용 할 수 있습니다.
|
|
|
http://www.soqool.com/servlet/board?cmd=view&cat=100&subcat=1010&seq=83&page=1&position=1