SQL 집계 함수(aggregate function)는 데이터베이스에 저장된 데이터에 대한 정보를 조회할 때 사용하는 강력한 도구입니다. 예를 들어 COUNT 함수를 사용하면 테이블에 몇 개의 레코드가 있는지 손쉽게 확인할 수 있습니다. SQL에서 표준으로 지원하는 집계 함수는 COUNT, MIN, MAX, AVG, SUM 다섯 가지입니다.
때로는 데이터 자체가 아니라 데이터에 대한 요약 정보가 필요할 때가 있습니다. 예를 들어 각 지사에 근무하는 직원 수가 궁금하거나, 회사에서 가장 오래 근무한 직원이 누구인지 알고 싶을 수 있습니다. 바로 이럴 때 SQL 집계 함수가 유용하게 사용됩니다.
이 글에서는 SQL 집계 함수의 기본 개념과 동작 방식, 그리고 실제 쿼리에서 활용하는 방법을 예제와 함께 자세히 살펴보겠습니다.
참고: 이 글의 예제는 PostgreSQL 기준으로 작성되었습니다.
SQL 집계 함수란?
SQL 집계 함수는 데이터베이스에 담긴 여러 레코드를 하나의 값으로 요약해 줍니다. 예를 들어 SUM 함수를 사용하면 특정 열(column)에 있는 모든 값의 합계를 구할 수 있습니다. 여러 레코드를 묶어 통계를 내야 하는 경우 집계 함수를 활용하면 복잡한 계산 없이 한 번의 쿼리로 결과를 얻을 수 있어 작업 시간을 크게 절약할 수 있습니다.
SQL에서 사용할 수 있는 대표적인 집계 함수는 다음과 같습니다.
- COUNT – 행(row)의 개수
- SUM – 값의 합계
- AVG – 값의 평균
- MIN – 최솟값
- MAX – 최댓값
이제 각 함수를 하나씩 자세히 살펴보겠습니다. 이 튜토리얼 전반에서는 '직원(employees)' 테이블을 예시로 사용합니다.
집계 함수는 SELECT 문에서 사용하며, 일반적으로 다음과 같은 형태로 작성됩니다.
SELECT 집계함수(열이름) FROM 테이블이름;
GROUP BY와 함께 사용하기
하나의 SELECT 문에서 일반 열과 집계 함수를 함께 조회하려면 반드시 GROUP BY 절을 사용해야 합니다. GROUP BY는 데이터를 어떤 기준으로 그룹화하여 보여줄지 SQL에 알려주는 역할을 합니다.
SQL COUNT: 행 개수 세기
COUNT 함수는 쿼리가 반환하는 전체 행의 개수를 돌려줍니다. WHERE 절과 함께 사용하면 조건을 만족하는 행만 골라 그 개수를 구할 수 있습니다.
예를 들어 스탬퍼드(Stamford) 지사에 근무하는 직원이 몇 명인지 알고 싶다면 다음과 같은 쿼리를 작성할 수 있습니다.
SELECT COUNT(name) FROM employees WHERE branch = 'Stamford';
쿼리 실행 결과는 다음과 같습니다.
| count |
| 1 |
(1 row)
SQL MIN과 MAX: 최솟값과 최댓값 구하기
MIN 함수는 특정 열에서 가장 작은 값을, MAX 함수는 가장 큰 값을 반환합니다. 두 함수 모두 대표적인 SQL 집계 함수입니다.
예를 들어 직원 한 명당 받은 '이달의 직원상' 수 중 가장 적은 횟수를 알고 싶다면 다음 쿼리를 사용합니다.
SELECT MIN(employee_month_awards) FROM employees;
실행 결과:
| min |
| 1 |
(1 row)
반대로 가장 많은 상을 받은 횟수를 알고 싶다면 MAX 함수를 사용하면 됩니다.
SELECT MAX(employee_month_awards) FROM employees;
실행 결과:
| max |
| 6 |
(1 row)
흥미로운 점은 MIN과 MAX가 숫자형 데이터뿐 아니라 문자열 데이터에도 사용할 수 있다는 것입니다. 예를 들어 MIN(name)을 사용하면 이름을 사전 순으로 가장 앞선 직원을 찾을 수 있고, MAX(name)을 사용하면 사전 순으로 가장 뒤에 있는 이름을 찾을 수 있습니다.
SQL AVG: 평균값 구하기
AVG 함수는 특정 열 값들의 평균을 계산해 반환합니다.
직원 한 명당 평균적으로 받은 '이달의 직원상' 횟수를 구하고 싶다면 다음 쿼리를 사용합니다.
SELECT AVG(employee_month_awards) FROM employees;
실행 결과:
| avg |
| 4 |
(1 row)
SQL SUM: 합계 구하기
SUM 함수는 특정 열에 있는 모든 값의 합계를 구합니다.
예를 들어 지금까지 발급된 '이달의 직원상'의 총 개수를 알고 싶다면 다음과 같이 SUM 문 하나로 간단히 확인할 수 있습니다.
SELECT SUM(employee_month_awards) FROM employees;
실행 결과:
| sum |
| 20 |
(1 row)
마치며
SQL 집계 함수는 데이터베이스의 데이터에 대한 요약 정보를 반환합니다. 예를 들어 AVG는 특정 열 값의 평균을 계산해 주며, SQL에는 MIN, MAX, COUNT, SUM, AVG 다섯 가지 집계 함수가 있습니다.
간단한 도전 과제를 하나 드리겠습니다. 이름이 'Linda'인 직원이 몇 명인지 찾는 집계 함수 쿼리를 직접 작성해 보세요. 그리고 위에서 살펴본 예제 쿼리들과 비교하면서 논리가 맞는지 확인해 보기 바랍니다.
SQL을 처음 배우거나 체계적인 학습 로드맵이 필요하다면, SQL 학습 가이드도 함께 참고해 보세요. 단계별 학습 방법과 추천 학습 자료를 확인할 수 있습니다.