[SQL 활용]그룹 함수(Group Function)

yellong·2020년 5월 29일
0

SQLD

목록 보기
25/27

ROLLUP

  • ROLLUP은 GROUPBY 칼럼에 대하여 Subtotal을 만들어진다.
  • ROLLUP을 할 때 GROUP BY구에 칼럼이 두 개 이상 오면 순서에 따라서 결과가 달라진다.
  • 아래 예시에서는 각 부서별 직업의 합계와, 부서별 합계, 그리고 총 합계가 구해진다.
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB);

GROUPING

  • GROUPING 함수는 ROLLUP, CUBE, GROUPING SETS에서 생성되는 합계값을 구분하기 위해서 만들어진 함수이다.
  • 예를 들어 소계, 합계 등이 계산되면 GROUPING 함수는 1을 반환하고, 그렇지 않으면 0을 반환해서 합계값을 식별할 수 있다.
SELECT DEPTNO, 
DECODE(GROUPING(DEPTNO), 1, '전체 합계') TOT, JOB, 
DECODE(GROUPING(JOB), 1, '부서합계) T_DEPT, SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB);

GROUPING SETS

  • GROUPING SETS 함수는 GROUP BY에 나오는 칼럼 순서와 관계없이 다양한 소계를 만들 수 있다.
  • GROUPING SETS 함수는 GROUP BY에 나오는 칼럼 순서와 관계없이
    개별적으로 모두 처리한다.
  • 아래 예시에는 DEPTNO 합계와 JOB 합계가 개별적으로 조회된다.
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY GROUPING SETS(DEPTNO, JOB);

CUBE 함수

  • CUBE는 CUBE 함수에 제시한 칼럼에 대해서 결합 가능한 모든 집계를 계산한다.
  • 다차원 집계를 제공하여 다양하게 데이터를 분석할 수 있게 한다.
  • 즉, 조합될 수 있는 경우의 수가 모두 조합되는 것이다.
  • 아래 예시는 직업별 합계, 부서별 합계, 직업-부서별 합계, 전체 합계가 조회된다.
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY CUBE(DEPTNO, JOB);

0개의 댓글