그룹 함수(Group Function)는 여러 값으로 이루어진 집합을 대상으로 동작합니다. 따라서 SELECT 절에서 그룹 함수를 사용하면, 쿼리의 선택 조건(WHERE 절 등)을 만족하는 행들에 대해 해당 함수가 일괄 적용되며, 그룹 함수의 계산 결과가 곧 쿼리의 최종 출력값으로 반환됩니다.
주요 그룹 함수의 종류
- COUNT() — 지정한 열에서 NULL이 아닌 값의 개수를 반환합니다.
- MIN() — 집합 내 최솟값을 반환합니다.
- MAX() — 집합 내 최댓값을 반환합니다.
- AVG() — 집합 내 값들의 평균을 반환합니다.
- SUM() — 집합 내 값들의 합계를 반환합니다.
예시
아래 예시에서는 'Student' 테이블의 필드들을 대상으로 SELECT 문 안에서 여러 그룹 함수를 함께 사용했습니다. 이때 문장의 실행 결과는 각 그룹 함수의 계산 결과로 구성됩니다.
mysql> Select COUNT(Name), MIN(Id), AVG(Id), MAX(Id), COUNT(*) from Student; +-------------+---------+---------+---------+----------+ | COUNT(Name) | MIN(Id) | AVG(Id) | MAX(Id) | COUNT(*) | +-------------+---------+---------+---------+----------+ | 5 | 1 | 11.0000 | 20 | 5 | +-------------+---------+---------+---------+----------+ 1 row in set (0.03 sec)
결과 해석
- COUNT(Name) → Name 열에 저장된 NULL이 아닌 값은 총 5개입니다.
- MIN(Id) → Id의 최솟값은 1입니다.
- AVG(Id) → Id의 평균값은 11.0000입니다.
- MAX(Id) → Id의 최댓값은 20입니다.
- COUNT(*) → 테이블의 전체 행 수는 5개입니다(COUNT(*)는 NULL 여부와 관계없이 모든 행을 셉니다).
이처럼 SELECT 절에서 그룹 함수를 활용하면 복잡한 별도의 처리 없이도 테이블 전체 또는 조건에 맞는 행 집합에 대한 통계 정보를 한 번의 쿼리로 손쉽게 얻을 수 있습니다.