-- ο GROUPING 함수
select dept, pos, grouping(dept), grouping(pos), trunc(avg(sal))
from emp
group by rollup(dept, pos);
-- grouping(컬럼) : 컬럼이 ROLLUP 연산에 참여 했으면 0, 참여하지 않았으면 1
select dept, trunc(avg(sal))
from emp
group by rollup(dept,pos)
having grouping(pos) = 1;
-- 부서별 평균 및 전체 평균
-- ο GROUP_ID 함수
select dept, empno, name, sum(sal)
from emp
group by rollup(dept, (empno, name))
order by dept;
-- 전체 리스트 및 부서별 소계, 전체 총계
select dept, empno, name, group_id(),sum(sal)
from emp
group by rollup(dept, (empno, name))
order by dept;
-- group_id() : 0부터 시작, n번 복제된 경우 n-1 번호 출력
select dept, empno, name, group_id(),sum(sal)
from emp
group by dept, rollup(dept, (empno, name))
order by dept, group_id(), empno;
-- 부서별 SAL 합계에 GRUOP_ID 1 부여
select dept, empno, group_id(),
decode(group_id(), 0, nvl(name, '합계'), '평균')name,
decode(group_id(), 0, sum(sal), round(avg(sal))) sal
from emp
group by dept, rollup(dept, (empno, name))
order by dept, group_id(), empno;
-- 평균에 GRUOP_ID 1 부여 , 평균 합계에 GRUOP_ID 1 부여