이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다. Java(TM) 플랫폼 : 1.8.0_321 Oracle IDE : 4.1.5.21.78 |
ROLLUP(), CUBE()
설명
ROLLUP() : 그룹화 데이터의 합계를 함께 출력하는 데 사용하는 함수. 다음과 같이 출력됨
1. A 그룹별 B 그룹별 C 그룹에 해당하는 결과 출력
2. A 그룹별 B 그룹에 해당하는 결과 출력
3. A 그룹에 해당하는 결과 출력
4. 전체 데이터 결과 출력
CUBE() : ROLLUP()과 마찬가지로 그룹화 데이터의 합계를 함께 출력하는 데 사용하는 함수. 다음과 같이 출력됨
1. A 그룹별 B 그룹별 C 그룹에 해당하는 결과 출력
2. A 그룹별 B 그룹의 결과 출력
3. B 그룹별 C 그룹의 결과 출력
4. A 그룹별 C 그룹의 결과 출력
5. A 그룹 결과
6. B 그룹 결과
7. C 그룹 결과
8. 전체 데이터 결과
문법
SELECT ...
FROM ...
WHERE ...
GROUP BY ROLLUP/CUBE(열1, 열2, ... , 열n)
ORDER BY ...
사용 예시
-- query1
SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
ORDER BY DEPTNO, JOB;
-- query2
SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB);
-- query3
SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY CUBE(DEPTNO, JOB)
ORDER BY DEPTNO, JOB;
-- query4
SELECT DEPTNO, JOB, COUNT(*)
FROM EMP
GROUP BY DEPTNO, ROLLUP(JOB);
-- query5
SELECT DEPTNO, JOB, COUNT(*)
FROM EMP
GROUP BY JOB, ROLLUP(DEPTNO);
결과
-- query1
SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
ORDER BY DEPTNO, JOB;
-- query2
SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB);
-- query3
SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY CUBE(DEPTNO, JOB)
ORDER BY DEPTNO, JOB;
-- query4
SELECT DEPTNO, JOB, COUNT(*)
FROM EMP
GROUP BY DEPTNO, ROLLUP(JOB);
-- query5
SELECT DEPTNO, JOB, COUNT(*)
FROM EMP
GROUP BY JOB, ROLLUP(DEPTNO);
'개발 지식 > [DBMS] Oracle' 카테고리의 다른 글
[Oracle] 데이터 그룹화(4) - GROUPING(), GROUPING_ID() (0) | 2022.05.25 |
---|---|
[Oracle] 데이터 그룹화(3) - GROUPING SETS() (0) | 2022.05.24 |
[Oracle] 데이터 그룹화(1) - GROUP BY, HAVING (0) | 2022.05.22 |
[Oracle] 다중행 함수(4) - AVG() (0) | 2022.05.21 |
[Oracle] 다중행 함수(3) - MAX(), MIN() (0) | 2022.05.20 |