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