SQL - ROLLUP절과 CUBE절

이승범·2024년 9월 15일

ROLLUP 절 예
-- GROUP BY ROLLUP(a, b)
a+b => a 별 b의 소계 : GROUP BY a, b 의 결과
a => a 별 소계
전체 => 마지막에 한번

GROUP BY x, ROLLUP(a, b)
x+a+b
x+a
x

GROUP BY x, ROLLUP(a)
x+a
x

dept별 pos의 sal 소계, dept별소계, 마지막에 총계 출력
            select dept, pos, sum(sal)
            from emp
            group by rollup(dept,pos)
            order by dept,pos
                -- rollup에 표현식이 2개 -> 합계 3개

       -- dept별 pos의 sal 소계, dept별 소계 출력하며 마지막에 총계는 출력하지 않는다.
            select dept, pos, sum(sal)
            from emp
            group by dept, rollup(pos)
            order by dept,pos
            
        -- 부서별 인원수 및 마지막에 전체 인원수 출력
            -- dept 전체 인원수
            select dept, count(*)
            from emp
            group by rollup(dept);

CUBE 절 사용 예시

dept별 pos의 sal 소계, dept별 소계, pos별 소계, 마지막에 총계 출력
            select dept, pos, sum(sal)
            from emp
            group by cube(dept,pos)
            order by dept,pos
        
        ------------------------------------------
        -- dept 별 남자와 여자 인원수 및 dept 인원수,전체 인원수
        --  dept 성별 인원
        --  개발부 여자 x
        --  개발부 남자 x
        --  개발부     x
        select dept, decode(mod(substr(rrn,8,1),2),1, '남자','0','여자') 성별, count(*)전체인원수
        from emp
        group by rollup(dept, mod(substr(rrn,8,1),2))
        order by dept;
profile
creative

0개의 댓글