그룹 함수 개념? SQL에서 1개 이상의 행을 그룹화

그룹 함수 개념에 대한 설명
그룹 함수 개념에 대한 설명

그룹 함수 개념에 대해서 이야기해봅시다.




그룹 함수 개념에 대해 알기

그룹 함수 개념데이터베이스(DataBase)에서 SQL(Structured Query Language)을 통해 1개 이상의 행을 그룹으로 묶어서 통계 정보를 계산할 수 있도록 하는 함수입니다.

그룹 함수에는 집계 함수소계 함수가 있습니다.

[그룹 함수의 종류]

구분종류내용
1집계 함수COUNT, SUM, AVG, MAX, MIN 등
2소계 함수ROLLUP, CUBE, GROUPING SETS 등

그룹 함수(Group Function)는 데이터를 GROUP BY 하여 나타낼 수 있는 데이터를 구하는 함수입니다. 그룹 함수를 역할에 따라 구분하면 집계 함수와 소계(총계) 함수로 구분할 수 있습니다.

그룹 함수는 반드시 하나의 값 만을 반환하게 됩니다. 그리고 NULL 값이 있는 컬럼은 조회에 포함되지 않습니다. NULL 값도 함께 고려되기 위해서는 NVL과 VNL2와 같은 함수를 사용해야 합니다.

GROUP BY 설정 없이는 일반 컬럼과 기술될 수 없습니다. COUNT, MAX, MIN은 문자와 숫자, 날짜 데이터를 모두 사용할 수 있지만 AVG, SUM, VARIANCE, STDDDEV는 숫자만 사용 가능합니다.

집계 함수는 COUNT, SUM, AVG, MAX, MIN가 대표적입니다.

소계 함수는 ROULLUP, CUBE, GROUPING SETS가 대표적입니다.




그룹 함수 개념에 대한 설명

그룹 함수(Group Function)데이터베이스(DataBase)테이블(Table)에서 전체 데이터 행을 1개 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화 하여 그룹 별로 결과를 출력하도록 하는 함수입니다.

그룹 함수 종류에는 COUNT, MAX, MIN, SUM, AVG, VARIANCE, STDDEV, ROLLUP, CUBE, GROUPING SETS 등이 있습니다.

그룹 함수는 집계 함수와 소계 함수로 구분할 수 있습니다. 집계 함수는 COUNT, MAX, MIN, SUM, AVG, VARIANCE, STDDEV 함수이며 소계 함수는 ROLLUP, CUBE, GROUPING SETS 입니다.

집계 함수를 정리하면 아래와 같습니다.

[집계 함수 정리]

함수명기능사용
COUNT행의 개수를 구하는 함수COUNT(컬럼)
MAX값들 중 최대 값을 구하는 함수MAX(컬럼)
MIN값들 중 최소 값을 구하는 함수MIN(컬럼)
AVG값들 중 평균을 구하는 함수AVG(컬럼)
SUM값들 중 총합을 구하는 함수SUM(컬럼)
VARIANCE분산을 계산하는 함수VARIANCE(컬럼)
STDDEV표준편차를 계산하는 함수STDDEV(컬럼)

소계 함수를 정리하면 아래와 같습니다.

[소계 함수 정리]

함수명기능
ROLLUP소그룹 간의 소계와 총계를 계산하는 함수
CUBE소그룹 간의 소계와 총계를 다차원적으로 계산할 수 있는 함수
GROUPING SETS특정 항목에 대한 소계를 계산 하는 함수




1. ROLLUP 함수

ROLLUP은 소그룹 간의 소계와 총계를 계산하는 함수입니다. ROLLUP 함수를 사용하면 그룹핑과 함께 총합계 결과도 얻을 수 있습니다. ROLLUP은 가장 기본적인 통계 명령입니다.


[ROLLUP 사용 예시]

SELECT 컬럼1, COUNT(*)
FROM 테이블1
GROUP BY ROLLUP(컬럼1)
ORDER BY 컬럼1

→ 컬럼1별로 그룹핑 + 총합계의 결과가 표출됨

[ROLLUP 기능]

구분내용
ROLLUP(a)– a로 그룹핑
– 총합계
ROLLUP(a, b)– a, b로 그룹핑
– a로 그룹핑
– 총합계
ROLLUP(a, b, c)– a, b, c로 그룹핑
– a, b로 그룹핑
– a로 그룹핑
– 총합계




2. CUBE 함수

CUBE 함수는 소그룹 간의 소계와 총계를 다차원적으로 계산할 수 있도록 하는 함수입니다. GROUP BY는 일방향으로 그룹핑하여 소계를 구하지만 CUBE는 조합할 수 있는 모든 그룹에 대한 소계를 집계할 수 있게 됩니다.


[CUBE 함수 사용 예시]

SELECT 컬럼1, COUNT(*)
FROM 테이블1
GROUP BY CUBE(컬럼1)
ORDER BY 컬럼1

→ 컬럼1별로 그룹핑 + 총합계의 결과가 표출됨


SELECT 컬럼1, 컴럼2, COUNT(*)
FROM 테이블1
GROUP BY CUBE(컬럼1, 컬럼2)
ORDER BY 컬럼1

→ 컬럼1, 컬럼2별로 그룹핑 + 컬럼1별로 그룹핑 + 컬럼2별로 그룹핑 + 총합계의 결과가 표출됨

[CUBE 기능]

구분내용
CUBE(a)– a로 그룹핑
– 총합계
CUBE(a, b)– a, b로 그룹핑
– a로 그룹핑
– b로 그룹핑
– 총합계
CUBE(a, b, c)– a, b, c로 그룹핑
– a, b로 그룹핑
– a, c로 그룹핑
– b, c로 그룹핑
– a로 그룹핑
– b로 그룹핑
– c로 그룹핑
– 총합계




3. GROUPING SETS

GROUPING SETS는 특정 항목에 대한 소계를 계산하도록 하는 함수입니다.


[GROUPING SETS 함수 사용 예시]

SELECT 컬럼1, 컴럼2, COUNT(*)
FROM 테이블1
GROUP BY GROUPING SETS(컬럼1, 컬럼2, ())
ORDER BY 컬럼1, 컬럼2

→ 컬럼1별로 그룹핑 + 컬럼2별로 그룹핑한 결과 + 총합계의 결과가 표출됨

[GROUPING SETS 기능]

구분내용
GROUPING SETS(a, b)– a로 그룹핑
– b로 그룹핑
GROUPING SETS(a, b, ())– a로 그룹핑
– b로 그룹핑
– 총합계
GROUPING SETS(a, ROLLUP(b))– a로 그룹핑
– b로 그룹핑
– 총합계
GROUPING SETS(a, ROLLUP(b, c))– a로 그룹핑
– b, c로 그룹핑
– b로 그룹핑
– 총합계
GROUPING SETS(a, b, ROLLUP(c))– a로 그룹핑
– b로 그룹핑
– c로 그룹핑
– 총합계