Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Without haste, but without rest

6.3. ROLLUP 본문

삽질의 리포팅

6.3. ROLLUP

느린구름 2011. 8. 12. 17:42

 

ROLLUP operator

-          GROUP BY 절과 같이 사용

-          GROUP BY절에 의해서 지어진 집합 결과에 대해 상세한 정보 반환

간단 예제

 

-- 먼저 GROUP BY를 사용해서 직업별로 급여 합계를 구하는 예제이다.

SQL> SELECT job, SUM(sal)

       FROM emp

       GROUP BY job;

 

JOB          SUM(SAL)

---------- ----------

ANALYST          600

CLERK            3200

MANAGER      33925

PRESIDENT      5000

SALESMAN       4000

 

 

-- ROLLUP을 사용해서 직업별로 급여 합계와  총계를 구하는 예제이다.

SQL> SELECT job, SUM(sal)

       FROM emp

       GROUP BY ROLLUP(job);

 

 

JOB          SUM(SAL

---------- ----------

ANALYST         6000

CLERK            3200

MANAGER      33925

PRESIDENT       5000

SALESMAN       4000

                    52125   --> 급여 합계에 대한 총계가 추가

 

좀 더 복잡한 예제

부서별로 인원수와 급여 합계를 구하는 예제

 

-- 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을 사용하여 쉽게 조회 할 수 있다.

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 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은 일반적인 누적에 대한 총계를 구할 때 아주 편리하게 사용 할 수 있다.