SQL - GROUPING 함수와 GROUP_ID 함수

이승범·2024년 9월 15일
 -- ο 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 부여
profile
creative

0개의 댓글