티스토리 뷰

Sql

그룹함수 - cube

pakker 2021. 3. 29. 14:15

rollup은 총 갯수, 총 합계 등만 가능했지만, cube는 결합 가능한 모든 값에 대하여 다차원 집계를 생성한다.

간단한 합계는 rollup을 사용하며, 다차원, 복합 합계는 cube를 사용한다.

cube는 다차원, 복합합계를 지원하므로 자원을 더 쓸테니까 필요에 따라 사용하면 된다.

 

rollup은 여기를 참고

2021.03.29 - [Sql] - 그룹 함수-rollup, rollup orderby, grouping

 

그룹 함수-rollup, rollup orderby, grouping

GROUP BY로 그룹핑한 로우들의 갯수나, 합계 등을 구해주는 기능이있다. oracle에서는 ROLLUP인데 mysql에서는WITH ROLLUP을 사용한다. 1. oracle select count(*) 'total empl', sum(SAL) 'total sal' from EMP,..

pakker.tistory.com

 

select 
   	case GROUPING(DNAME) 	when 1 then "All Departments" else DNAME end as DNAME,
   	case GROUPING(JOB) 	when 1 then "All Jobs" 	   else JOB 	 end as JOB,
   	count(*) 'total empl',
        sum(SAL) 'total sal'
from EMP, DEPT
where DEPT.DEPTNO = EMP.DEPTNO
group by cube(DNAME,JOB) 

이렇게 all departments에 job별로 총계도 나오게 된다.

 

cube를 사용하지 않는다면... 하단처럼 구구절절 코드를 작성해야 하며, emp,dept테이블을 4번이나 반복하는 것에서 자원낭비가 발생한다.

cube를 사용하면 동일하게 자원이 사용되는줄 알았는데 그게 아니고 수행속도 및 자원 사용율을 개선할 수 있으며 가독성도 좋다.

 

'Sql' 카테고리의 다른 글

윈도우함수 ≒ 분석함수 ≒ 순위함수  (0) 2021.03.29
그룹함수 - Grouping sets  (0) 2021.03.29
그룹 함수-rollup, rollup orderby, grouping  (0) 2021.03.29
서브쿼리  (0) 2021.03.28
직관적인 JOIN 설명  (0) 2021.03.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함