2017년 4월 8일 토요일

[구로IT학원,오라클교육,SQL,튜닝강좌] GROUPING 함수

GROUPING 

이 함수는 기술된 컬럼이 ROLLUP이나 CUBE 연산시 사용되었는지를 확인하게 해주는 함수로서 별다른 기능은 없으며 ROLLUP이나 CUBE 사용시 사용자의 이해를 돕기 위한 함수이다. 예를 여 출력된 값 중 NULL이 포함되어 있다면 이 값이 원래 DB에서 NULL인지 CUBE, ROLLUP을 통해 NULL인 된 것 인지를 판단 할 수 있다. ROLLUP/CUBE를 통해 NULL이 생기면 ‘1’이라고 표시 한다. 


SQL> select deptno, job, sum(sal), grouping(deptno), grouping(job) 
  2  from emp 
  3  group by cube(deptno, job); 

    DEPTNO JOB        SUM(SAL) GROUPING(DEPTNO) GROUPING(JOB) 
---------- --------- ---------- ---------------- ------------- 
                          24025                1            1 
          CLERK          4150                1            0 
          ANALYST        6000                1            0 
          MANAGER        8275                1            0 
          SALESMAN        5600                1            0 
          PRESIDENT                          1            0 
        10                5000                0            1 
        10 CLERK          1300                0            0 
        10 MANAGER        2450                0            0 
        10 SALESMAN        1250                0            0 
        10 PRESIDENT                          0            0 

    DEPTNO JOB        SUM(SAL) GROUPING(DEPTNO) GROUPING(JOB) 
---------- --------- ---------- ---------------- ------------- 
        20                10875                0            1 
        20 CLERK          1900                0            0 
        20 ANALYST        6000                0            0 
        20 MANAGER        2975                0            0 
        30                8150                0            1 
        30 CLERK            950                0            0 
        30 MANAGER        2850                0            0 
        30 SALESMAN        4350                0            0 

SQL> SELECT DEPTNO, GROUPING(DEPTNO) chk1, 
  2              JOB, GROUPING(JOB) chk2, 
  3              COUNT(*), 
  4              AVG(SAL) * 12 "년봉" 
  5  FROM EMP 
  6  GROUP BY ROLLUP(DEPTNO, JOB); 

    DEPTNO      CHK1 JOB            CHK2  COUNT(*)      년봉 
---------- ---------- --------- ---------- ---------- ---------- 
        10          0 CLERK              0          1      15600 
        10          0 MANAGER            0          1      29400 
        10          0 SALESMAN          0          1      15000 
        10          0 PRESIDENT          0          1 
        10          0                      1          4      20000 
        20          0 CLERK              0          2      11400 
        20          0 ANALYST            0          2      36000 
        20          0 MANAGER            0          1      35700 
        20          0                      1          5      26100 
        30          0 CLERK              0          1      11400 
        30          0 MANAGER            0          1      34200 
        30          0 SALESMAN          0          3      17400 
        30          0                      1          5      19560 
                  1          1      14 22176.9231

댓글 없음:

댓글 쓰기