ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7.4 그룹화와 관련된 여러 함수
    Oracle 2023. 8. 19. 17:49

    GROUP BY절에 사용할 수 있는 특수 함수들에 대해 배운다

    7.4.1 ROLLUP, CUBE

    • 그룹화 데이터의 합계를 출력할 때 사용
    SELECT {조회할 열}
    FROM {조회할 테이블 이름}
    WHERE {조회할 행을 선별하는 조건식}
    GROUP BY ROLLUP {그룹화열 지정}
    SELECT {조회할 열}
    FROM {조회할 테이블 이름}
    WHERE {조회할 행을 선별하는 조건식}
    GROUP BY CUBE {그룹화열 지정}

     

    • 기존 GROUP BY절
    SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
    FROM EMP
    GROUP BY DEPTNO, JOB
    ORDER BY DEPTNO, JOB;

    • ROLL UP : 명시한 열을 소그룹부터 대그룹의 순서로
      1. 각 그룹 조건별 합 출력
      2. 각 그룹별 총합을 출력
      3. 마지막에 총 데이터의 결과를 출력
    SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
    FROM EMP
    GROUP BY ROLLUP(DEPTNO, JOB)
    ORDER BY DEPTNO, JOB;

    • CUBE : ROLLUP이 뒤에 적은 조건부터 하나씩 빼면서 데이터를 출력한다면, CUBE는 가능한 조건 조합을 모두 출력
    SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
    FROM EMP
    GROUP BY CUBE(DEPTNO, JOB)
    ORDER BY DEPTNO, JOB;

    JOB으로만 합계를 낸 결과도 출력하고 있다

      n개의 열을 지정하면 ROLLUP은 n+1개의 조합을, CUBE는 2^n개의 조합을 출력한다. 따라서 너무 많은 조합이 출력되지 않도록 함수를 부분적으로 활용할 필요가 있다. 필요에 따라 실무에서 종종 사용된다. 어떤 결과가 나올지 예측하기는 처음부터 쉽지 않다. 시간과 경험이 도와줄 것이다.

     

    • GROUPING SETS
    SELECT {조회할 열}
    FROM {조회할 테이블 이름}
    WHERE {조회할 행을 선별하는 조건식}
    GROUP BY GROUPING SETS {그룹화열 지정}
    SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
    FROM EMP
    GROUP BY GROUPING SETS(DEPTNO, JOB)
    ORDER BY DEPTNO, JOB;

    지정한 열을 각각 따로 그룹화한 결과를 출력

     

Designed by Tistory.