티스토리 뷰

MODEL/ORACLE

[ORACLE] ROLLUP 과 CUBE

찰떡쿠키부스트 2017. 11. 15. 17:49

 

 

ROLLUP

-그룹핑된 결과에 그룹별 합계 정보를 추가

CUBE

-그룹핑된 컴럼의 모든 가능한 조합에 대한 합계 정보 추가

EX) ROLLUP

SELECT job, SUM(sal)

FROM emp

GROUP BY job;  

     JOB            SUM(SAL)

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

ANALYST             600

CLERK                3200

MANAGER           33925

PRESIDENT          5000

SALESMAN          4000

SELECT job, SUM(sal)

FROM emp

GROUP BY ROLLUP(job);

JOB                 SUM(SAL

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

ANALYST           6000

CLERK               3200

MANAGER          33925

PRESIDENT         5000

SALESMAN         4000

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

​EX) CUBE

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)



GROUPING 함수

-PSEUDO column ( 슈도함수 -실제로는 존재하지 않으나 특수목적으로 사용)

-row가 group by에 의해 생긴 row 인지 rollup,cube에 의해 생긴 row 인지 판별하는 함수


ex)

SELECT b.dname, a.job, SUM(a.sal) sal, COUNT(a.empno) emp_count,

 GROUPING(b.dname) "D", GROUPING(a.job) "S"

FROM emp a, dept b

WHERE a.deptno = b.deptno

GROUP BY CUBE(b.dname, a.job)

'MODEL > ORACLE' 카테고리의 다른 글

[ORACLE] SUBQUERY 문  (0) 2017.11.16
[ORACLE] exists 연산자  (0) 2017.11.16
[ORACLE] DECODE & CASE 함수  (0) 2017.11.15
[ORACLE] 연산자 및 기본 함수(LIKE,ROUNDADD_MONTHS,TO_CHAR 등등)  (0) 2017.11.15
[ORACLE] 조인 과 ANSI 조인  (1) 2017.11.15
댓글