Rollup 하고 Cube

1 minute read

rollup

자주 쓰일까? 난 잘 모르겠다.
group by rollup(컬럼, 컬럼, …)
이런 식으로 쓴다.
이렇게 쓰면 결과가 rollup 괄호 안에 쓰여진 컬럼 개수+1 레벨만큼 구분되어서 나온다.
컬럼이 2개면 3레벨.

  • 3레벨은 컬럼1, 컬럼2로 구분된 결과
  • 2레벨은 컬럼1로 구분된 결과(그래서 컬럼 2끼리는 합이? 나오는듯??)
  • 1레벨은 전체 합계가 집계된다.

예시 1.

select period, gubun, sum(loan_jan_amt) totl_jan
from kor_loan_status
where period like '2013%'
group by rollup(period, gubun);

이렇게 하면 결과가

PERIOD GUBUN TOTL_JAN
201310 기타대출 676078
201310 주택담보대출 411415.9
201310   1087493.9
201311 기타대출 681121.3
201311 주택담보대출 414236.9
201311   1095358.2
    2182852.1

이렇게 나옴.

예시 2.

select period, gubun, sum(loan_jan_amt) totl_jan
from kor_loan_status
where period like '2013%'
group by period, rollup(gubun);

이렇게 쓰면

PERIOD GUBUN TOTL_JAN
201310 기타대출 676078
201310 주택담보대출 411415.9
201310   1087493.9
201311 기타대출 681121.3
201311 주택담보대출 414236.9
201311   1095358.2

이렇게 나온다. 이거는 2레벨로 나온것.

  • 2레벨 : period, gubun
  • 1레벨 : period

cube

rollup과 비슷하지만 개념이 약간 다르다고 함. rollup이 레벨별로 순차적 집계를 했다면, cube는 명시한 표현식 개수에 따라 가능한 모든 조합별로 집계한 결과를 반환한다. cube는 2의 (expr수) 제곱 만큼 종류별로 집계된다. 예를 들어, expr 수가 3이면, 집계 결과의 유형은 총 2의 3승 = 8개가 된다. 그렇다고 함..

표현식 개수에 따라 rollup은 레벨별로, cube는 가능한 조합별로 집계를 수행한다!!!

Updated: