목차
4. 서브쿼리
4-3. 그룹함수
4-3-1. ROLLUP
4-3-2. CUBE
4-3-3. GROUPING SETS
4-3-4. GROUPING
4. 서브쿼리
4-3. 그룹함수
그룹함수는 GROUP BY의 결과를 대상으로 그룹별 집계나 소계, 통계를 계산하는 함수이다.
대표적인 그룹 함수는 다음과 같다.
- 집계함수(COUNT, SUM, AVG 등)
- ROLLUP
- CUBE
- GROUPING SETS
- GROUPING
1️⃣ ROLLUP
ROLLUP은 GROUP BY 컬럼을 기준으로 계층적인 소계와 총계를 생성하는 함수이다.
쉽게 말해서, 아래에서 위로 올라가며 합계를 만든다고 볼 수 있다.
✔️ 특징
- 계층적인 그룹핑
- 소계 + 총계 생성
- 1차원(계층형) 그룹핑
- ex) GROUP BY ROLLUP(날짜, 이름)
➜ 생성되는 그룹 : (날짜, 이름) -> 날짜별 소계 -> 전체 총계
🔹 기본 사용법
SELECT A
,COUNT(*)
FROM DUAL
GROUP BY ROLLUP(A)
ORDER BY A;
🔹 예제(테이블 일부)

SELECT CYL
,COUNT(*)
FROM MTCARS
GROUP BY ROLLUP(CYL)
ORDER BY CYL;
➜ 실린더 수 별 개수를 구한 후, 총계까지 함께 조회한다.
🔹 실행결과

2️⃣ CUBE
CUBE는 가능한 모든 조합의 그룹을 생성하는 함수이다.
ROLLUP보다 더 많은 결과가 만들어진다.
✔️ 특징
- 가능한 모든 조합 생성
- 소계 + 총계 생성
- 2차원(입체적) 그룹핑
- ex) GROUP BY CUBE(날짜, 이름)
➜ 생성되는 그룹 : (날짜, 이름) -> 날짜별 소계 -> 이름별 소계 -> 전체 총계
🔹 기본 사용법
SELECT A
,B
,COUNT(*)
FROM DUAL GROUP BY CUBE(A, B)
ORDER BY A, B;
🔹 예제
SELECT CYL
,GEAR
,COUNT(*)
FROM MTCARS GROUP BY CUBE(CYL, GEAR)
ORDER BY CYL, GEAR;
➜ 실린더 수 별 그룹, 기어 수 별 그룹, 실린더+기어 조합, 전체 총계를 모두 조회한다.
🔹 실행결과

3️⃣ GROUPING SETS
그룹핑 대상을 지정하는 함수
GROUPING SETS는 원하는 그룹만 선택해서 그룹핑하는 함수이다.
ROLLUP이나 CUBE처럼 자동으로 소계를 만드는 것이 아니라, 지정한 그룹만 계산한다.
✔️ 특징
- 필요한 그룹만 선택 가능
- 불필요한 소계 생성을 하지 않음
🔹 기본 사용법
SELECT A
,B
,COUNT(*)
FROM DUAL
GROUP BY GROUPING SETS(A, B)
ORDER BY A, B;
🔹 예제
SELECT CYL
,GEAR
,COUNT(*)
FROM MTCARS
GROUP BY GROUPING SETS(CYL, GEAR)
ORDER BY CYL, GEAR;
➜ 실린더 수, 기어 수 별로 그룹한 결과만 조회한다.
ROLLUP 처럼 총계가 자동으로 생성되지 않는다.
🔹 실행결과

4️⃣ GROUPING
GROUPING 함수는 ROLLUP, CUBE, GROUPING SETS와 함께 사용되며
현재 행이 소게 또는 총계인지를 판별하는 함수이다.
✔️ 반환값
| 값 | 의미 |
| 0 | 일반 데이터 |
| 1 | 소계 또는 총계 |
🔹 기본 사용법
SELECT CASE GROUPING(A)
WHEN 1 THEN '총계' ELSE TO_CHAR(A)
END AS A,
COUNT(*)
FROM DUAL
GROUP BY ROLLUP(A)
ORDER BY A;
🔹 예제
SELECT CASE GROUPING(CYL)
WHEN 1 THEN '총계' ELSE TO_CHAR(CYL)
END AS CYL,
COUNT(*)
FROM MTCARS
GROUP BY ROLLUP(CYL)
ORDER BY CYL;
➜ 실린더 수 별 그룹과 총계 행을 구분하여 '총계'라는 문자로 표시한다.
🔹 실행결과

📝 그룹함수 비교
| 함수 | 특징 |
| ROLLUP | 계층적인 소계와 총계를 생성 |
| CUBE | 가능한 모든 조합의 소계와 총계를 생성 |
| GROUPING SETS | 원하는 그룹만 선택하여 그룹핑 |
| GROUPING | 소계 / 통계 여부를 판별 |
📌 시험에는 CASE 문과 반드시 함께 나온다.
📌 그룹함수는 매 시험마다 나오니 반드시 숙지하자.
🔗 출처