'Cube'에 해당되는 글 1건

  1. 2015.08.29 cube, rollup to grouping sets

1. rollup을 grouping sets로 바꿔본 예

 

-rollup

select manager_id, job_id, sum(salary)
from employees
where manager_id is not null
and manager_id < 120
group by rollup(manager_id, job_id);

 

-rollup to grouping sets

select manager_id, job_id, sum(salary)
from em
where manager_id is not null
and manager_id < 120
group by grouping sets (
                            (manager_id, job_id),
                            (manager_id),
                            ()
                          );

 

2. cube를 grouping sets로 바꿔본 예

 

-cube

select manager_id, job_id, sum(salary)
from em
where manager_id is not null
and manager_id < 120
group by cube(manager_id, job_id);

 

 

-cube to grouping sets

select manager_id, job_id, sum(salary)
from em
where manager_id is not null
and manager_id < 120
group by grouping sets(
                          (),
                          (job_id),
                          (manager_id),
                          (manager_id, job_id)
                          );

 

 

그런데 정렬이 동일하지 않다. 그래서 정렬도 추가한다. 단 null값은 기본적으로 오름차순시 가장 큰 값 위치로 정렬되기에 이를 바꾼다.

select manager_id, job_id, sum(salary)
from em
where manager_id is not null
and manager_id < 120
group by grouping sets(
                          (),
                          (job_id),
                          (manager_id),
                          (manager_id, job_id)
                          )
order by 1 nulls first, 2 asc nulls first;

 

한번 grouping sets을 터득해보니 cube와 rollup보다 자유로워진 느낌이다.
 

 

 

'Knowledge > SQL' 카테고리의 다른 글

constraints deferred  (0) 2015.08.21
stddev, variance function  (0) 2015.08.15
Posted by neo-orcl
,