[SQL/ORACLE] 기본집계함수(ROLLUP, CUBE, GROUPING SETS)

DANI·2023년 11월 12일
0

ORACLE_SQL

목록 보기
9/10
post-thumbnail

💡 ROLLUP과 CUBE는 GROUP BY절에서 사용되어 그룹별 소계를 추가로 보여주는 역할을 한다



🔍 ROLLUP

🔴 예시1

select job, deptno, sum(sal)
from emp
group by job, deptno;

🔵 예시1


🔴 예시2

select job, deptno, sum(sal)
from emp
group by rollup(job, deptno);

🔵 예시2

추가적인 집계정보를 보여준다.


🔴 예시3

select job, deptno, sum(sal)
from emp
group  by job, rollup(deptno);

🔵 예시3

JOB별로 추가적인 집계정보를 보여준다.


🔴 예시4

select job, deptno, sum(sal)
from emp
group  by deptno, rollup(job);

🔵 예시4

deptno별로 추가적인 집계정보를 보여준다.




🔍 CUBE

🔴 예시1

select job, deptno, sum(sal)
from emp
group by job, deptno;

🔵 예시1


🔴 예시2

select job, deptno, sum(sal)
from emp
group by cube(job, deptno);

🔵 예시2

가능한 모든 조합별로 집계한 결과를 반환한다.



✨ ROLLUP과 CUBE 집계 종류 차이

  • ROLLUP(ex1, ex2)

    ▶ ex1+ex2
    ▶ ex1
    ▶ 전체
  • CUBE(ex1, ex2)

    ▶ ex1+ex2
    ▶ ex1
    ▶ ex2
    ▶ 전체

  • GROUP BY ex1, ROLLUP(ex2, ex3)

    ▶ ex1 + (ex2 + ex3)
    ▶ ex1 + (ex2)
    ▶ ex1
  • GROUP BY ex1, CUBE(ex2, ex3)

    ▶ ex1 + (ex2 + ex3)
    ▶ ex1 + (ex2)
    ▶ ex1 + (ex3)
    ▶ ex1


🔍 GROUPING SETS

🔴 예시1

select job, deptno, sum(sal)
from emp
group by job, deptno;

🔵 예시1


🔴 예시2

select job, deptno, sum(sal)
from emp
group by GROUPING SETS(JOB, DEPTNO);

🔵 예시2

JOB별 합계, DEPTNO별 합계만 조회되었다



💡 GROUPING SETS (ex1, ex2, ex3)는 괄호 안에 있는 세 표현식 별로 각각 집계가 이루어진다.

즉, ((GROUP BY ex1) UNION ALL(GROUP BY ex2) UNION ALL(GROUP BY ex3))형태가 된다.

0개의 댓글