참고
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