CUBE operator [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)
UNION
SELECT ’ ’, job, SUM(sal) sal, COUNT(empno) emp_count
FROM emp
GROUP BY ROLLUP(job)
 
DNAME      JOB               SAL  EMP_COUNT
---------- ---------- ---------- ----------
ACCOUNTING CLERK               1300          1
ACCOUNTING MANAGER          2450          1
ACCOUNTING PRESIDENT        5000          1
ACCOUNTING                         8750          3
RESEARCH    ANALYST           6000          2
RESEARCH    CLERK               1900          2
RESEARCH    MANAGER          2975          1
RESEARCH                           10875          5
SALES          MANAGER         28500          1
SALES          SALESMAN         4000          3
SALES                                 32500          4   => 요기 까지는 첫 번째 ROLLUP를 이용해서 구하고요
                   ANALYST          6000          2
                   CLERK              3200          3
                   MANAGER         33925          3
                   PRESIDENT        5000          1
                   SALESMAN         4000          3
                                           52125         12  => 요 부분은 두 번째 ROLLUP을 이용해서 구했습니다.

 


CUBE Operator를 사용하면 편하게 하나의 SQL문으로 위의 결과를 얻을 수 있습니다.
직접 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 CUBE(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 부서의 직업별 급여 총계와 사원수.
                   ANALYST          6000          2
                   CLERK              3200          3
                   MANAGER         33925          3
                   PRESIDENT        5000          1
                   SALESMAN         4000          3   
                                           52125         12  => 직업별로 급여의  총계와 사원수를 보여줍니다.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 밀리 | 2008/09/29 10:53 | DB[ORACLE/MS-SQL] | 트랙백 | 덧글(0)

트랙백 주소 : http://ggwangs.egloos.com/tb/887087
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶