MySQL 그룹 함수란 무엇인가?
그룹 함수(Group Function)는 여러 행(row)으로 구성된 그룹 전체에 적용되는 함수입니다. 즉, 개별 행 단위가 아니라 값들의 집합을 대상으로 연산을 수행하며, '집계 함수(Aggregate Function)'라고도 부릅니다. 주로 GROUP BY 절과 함께 사용되어 부서별 평균 급여, 전체 주문 건수처럼 데이터를 요약한 결과를 얻을 때 활용됩니다.
아래에서 MySQL이 제공하는 대표적인 그룹 함수들을 용도별로 나누어 정리했습니다.
1. 기본 집계 함수
| 번호 | 함수 및 설명 |
|---|---|
| 1 | AVG() 인자로 전달된 값들의 평균값을 반환합니다. |
| 2 | COUNT() 조회된 행(row)의 개수를 반환합니다. |
| 3 | COUNT(DISTINCT) 중복을 제거한 서로 다른 값의 개수를 반환합니다. |
| 4 | MAX() 그룹 내 최댓값을 반환합니다. |
| 5 | MIN() 그룹 내 최솟값을 반환합니다. |
| 6 | SUM() 그룹 내 값들의 합계를 반환합니다. |
| 7 | GROUP_CONCAT() 그룹 내 문자열 값들을 하나로 연결(concatenate)하여 반환합니다. |
2. 비트 연산 함수
| 번호 | 함수 및 설명 |
|---|---|
| 1 | BIT_AND() 그룹 내 모든 값에 대한 비트 AND 연산 결과를 반환합니다. |
| 2 | BIT_OR() 그룹 내 모든 값에 대한 비트 OR 연산 결과를 반환합니다. |
| 3 | BIT_XOR() 그룹 내 모든 값에 대한 비트 XOR 연산 결과를 반환합니다. |
3. 통계 관련 함수
| 번호 | 함수 및 설명 |
|---|---|
| 1 | STD() 모표준편차(population standard deviation)를 반환합니다. |
| 2 | STDDEV() 모표준편차를 반환합니다. STD()와 동일하게 동작합니다. |
| 3 | STDDEV_POP() 모표준편차를 반환합니다. |
| 4 | STDDEV_SAMP() 표본표준편차(sample standard deviation)를 반환합니다. |
| 5 | VAR_POP() 모분산(population variance)을 반환합니다. |
| 6 | VAR_SAMP() 표본분산(sample variance)을 반환합니다. |
| 7 | VARIANCE() 모분산을 반환합니다. VAR_POP()과 동일하게 동작합니다. |
그룹 함수 사용 예시
SELECT AVG(salary), COUNT(*), MAX(salary), MIN(salary)
FROM employees;
위 쿼리는 직원 테이블에서 평균 급여, 총 인원 수, 최고 및 최저 급여를 한 번의 조회로 얻어냅니다. 이처럼 그룹 함수를 활용하면 여러 행의 데이터를 손쉽게 요약할 수 있습니다.
알아두면 좋은 점
대부분의 그룹 함수는 계산 시 NULL 값을 제외합니다. 반면 COUNT(*)는 행 자체를 세는 함수이므로 NULL 여부와 관계없이 전체 행 수를 반환한다는 점을 기억해 두면 유용합니다.