[80일차] 그룹함수 CUBE

저요·2022년 12월 11일

2022 100th day challenge

목록 보기
79/97

CUBE란?

CUBE란 오라클에서 사용할 수 있는 그룹함수 중 하나이다. 그룹핑 컬럼이 가질 수 있는 모든 경우의 수에 대하여 소계와 총계를 만들어낸다.

CUBE 사용예시

사용방법은 ROLLUP과 큰 차이는 없다.

SELECT COLUM1, COLUM2, SUM(COLUM3) AS SUM
FROM TABLE
GROUP BY CUBE(COLUM1, COLUM2)

ROLLUP과의 차이점

ROLLUP과의 차이점은 ROLLUP은 소그룹 간의 소계를 계산하지만, CUBE는 GROUP BY 항목들간 다차원적인 소계를 계산할 수 있다는 것이다. 즉 모든 그룹 케이스를 계산한다. 또 ROLLUP과의 차이점은 지정 컬럼의 순서가 달라도 같은 결과를 낸다는 것이다.

예제를 통해 차이점을 더 알아보겠다.
(예제 데이터 출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=easternsun&logNo=220171237773)

ROLLUP으로 사용했을 경우

select enpNm, ymd, sum(val) as val 
from saleTable
group by rollup(ymd, enpNm)
order by ymd;

다음과 같이 날짜와 이름으로 ROLLUP을 하니 각 이름 별 합계와 날짜 그룹의 소계가 나타나며 마지막에 총 합계가 구해졌다.

CUBE로 사용했을 경우

select enpNm, ymd, sum(val) as val 
from saleTable
group by cube(ymd, enpNm)
order by ymd;

다음과 같이 각 이름별 데이터의 전체 ymd의 소계가 밑에 초록색 밑줄 친 것처럼 도출된다.

참고

https://sewonzzang.tistory.com/59

profile
웹개발

0개의 댓글