Oracle - ROLLUP, cube

갓김치·2020년 8월 20일
0

Oracle

목록 보기
21/33

참고

2020-08-20-03)ROLLUP_CUBE.sql

ROLLUP과 CUBE를 쓰는 이유

  • 예) KOR_LOAN_STATUS 테이블에서 기간별 지역별 대출잔액합계를 조회하시오
  • 이런식으로 나와서 '2011년' 의 '강원' 자료를 구별하기가 쉽지 않음

ROLLUP(c1, c2, ...)

  • 상식선에서 인정할 수 있는 다양한 집계
  • 기본집계함수에서 제공하지 않는 부분별 소계를 제공
  • GROUP BY 절에 사용
  • ROLLUP(c1, c2, ...) -- 집계함수를 제외시키고 select 절에 사용되는 모든 일반 컬럼
    • 명시된 컬럼(c1, c2,..)의 수와 순서(오른쪽->왼쪽)에 따라 레벨별 집계결과 반환
    • 사용된 컬럼의 수가 n개이면 n+1레벨까지 (하위레벨에서 상위레벨 순으로 집계반환)

예시

1-1. ROLLUP(PERIOD,REGION)

1-2. ROLLUP(REGION,PERIOD)

2. 상품테이블에서 분류별, 거래처별, 매입가격 합계와 상품의 수를 조회하시오

  • ROLLUP 하지 않았을 때
  • ROLLUP 적용

CUBE(c1,c2,...)

  • ROLLUP과 비슷한 개념
  • CUBE는 기술된 모든 컬럼을 조합할 수 있는 모든 가지수만큼의 합계를 반환 (너무 자세한 집계)
  • ROLLUP과 출력순서 반대 (ex 전체집계가 맨 위로)

예시

1. 대출잔액테이블에서 기간별, 지역별, 구분별 대출잔액합계를 조회하시오

  • ROLLUP

    • 362행: 기간별,지역별,구분별 합계
      363행: 기간별,지역별 합계
      364행: 기간별 합계
      365행: 전체합계
  • ROLLUP 부분적용

    • 이미 PERIOD가 기준으로 잡혀있기때문에 전체합계가 나오지 않음
  • CUBE

profile
갈 길이 멀다

0개의 댓글