Where The Streets Have No Name

GROUPING SETS 함수 본문

Developement/DataBase

GROUPING SETS 함수

highheat 2006. 4. 13. 16:13
GROUPING SETS  

이 함수는 오라클 이전 버전에서 UNION ALL등을 사용하여 복잡하게 SQL문장을 만드는 부분을 해소 할 수 있도록 한 GROUP BY의 확장이다. 실습을 통해 이해하자.

à 아래는 기존 함수인 GROUP BY를 이용하여 부서별 직업별, 직업별, 관리자별 각각 그룹핑을 한 후 둘을 합친 결과를 얻는 예제이다.
SQL> SELECT deptno, job, NULL, sum(sal)
 2  FROM emp
 3  GROUP BY deptno, job
 4  UNION ALL
 5  SELECT NULL, job, mgr, sum(sal)
 6  FROM emp
 7  GROUP BY job, mgr;

   DEPTNO JOB             NULL   SUM(SAL)
---------- --------- ---------- ----------
       10 CLERK                      1300
       10 MANAGER                    2450
       10 SALESMAN                   1250
       10 PRESIDENT
       20 CLERK                      1900
       20 ANALYST                    6000
       20 MANAGER                    2975
       30 CLERK                       950
       30 MANAGER                    2850
       30 SALESMAN                   4350
          CLERK           7698        950

   DEPTNO JOB             NULL   SUM(SAL)
---------- --------- ---------- ----------
          CLERK           7782       1300
          CLERK           7788       1100
          CLERK           7902        800
          ANALYST         7566       6000
          MANAGER         7839       8275
          SALESMAN        7698       5600
PRESIDENT

à 아래는 위의 예문과 같은 결과를 내기 위해 GROUPING SET을 이용한 사례 이다.
SQL> SELECT deptno, job, mgr, sum(sal)
 2         FROM emp
 3         GROUP BY GROUPING SETS ((deptno, job), (job, mgr));

   DEPTNO JOB              MGR   SUM(SAL)
---------- --------- ---------- ----------
       10 CLERK                      1300
       10 MANAGER                    2450
       10 SALESMAN                   1250
       10 PRESIDENT
       20 CLERK                      1900
       20 ANALYST                    6000
       20 MANAGER                    2975
       30 CLERK                       950
       30 MANAGER                    2850
       30 SALESMAN                   4350
          CLERK           7698        950

   DEPTNO JOB              MGR   SUM(SAL)
---------- --------- ---------- ----------
          CLERK           7782       1300
          CLERK           7788       1100
          CLERK           7902        800
          ANALYST         7566       6000
          MANAGER         7839       8275
          SALESMAN        7698       5600
          PRESIDENT