-
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 : 명시한 열을 소그룹부터 대그룹의 순서로
- 각 그룹 조건별 합 출력
- 각 그룹별 총합을 출력
- 마지막에 총 데이터의 결과를 출력
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;
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;
'Oracle' 카테고리의 다른 글
8.2 오라클 JOIN (0) 2023.08.22 8. JOIN : 여러 테이블을 하나의 테이블처럼 사용하자 (0) 2023.08.21 7.3 HAVING : GROUP BY에 조건을 걸자 (0) 2023.08.18 7.2 GROUP BY : 결과 값을 원하는 열로 묶어서 출력 (0) 2023.08.18 7. 다중행 함수와 데이터 그룹화 (0) 2023.08.18