본문 바로가기
자격증 준비/SQLD

집계 함수란 무엇인가: COUNT, SUM, AVG 쉽게 이해하기

by 코딩사무소장 2026. 3. 14.
반응형

집계 함수란 무엇인가: COUNT, SUM, AVG 쉽게 이해하기

SQL을 공부하다 보면 집계 함수라는 개념이 자주 나옵니다. 처음에는 COUNT, SUM, AVG, MAX, MIN 같은 함수가 각각 무엇을 하는지 알 것 같으면서도, GROUP BY나 HAVING과 함께 나오면 헷갈리기 쉽습니다. 결론부터 말하면 집계 함수는 여러 행의 값을 하나로 요약해서 계산하는 함수입니다. 이 글에서는 SQL 초보자와 SQLD 준비생이 헷갈리지 않도록 집계 함수의 의미, 대표 함수, 예제, 자주 하는 실수까지 한 번에 정리해보겠습니다.

이 글은 이런 분께 추천합니다
  • COUNT, SUM, AVG 차이가 헷갈리는 분
  • GROUP BY와 집계 함수 관계를 정리하고 싶은 분
  • SQLD에서 집계 함수 문제를 자주 틀리는 분
  • SQL 기초 문법을 구조적으로 이해하고 싶은 비전공자

집계 함수란 무엇인가

집계 함수는 여러 행의 데이터를 모아서 하나의 결과로 계산하는 함수입니다.

예를 들어 직원 테이블이 있다고 할 때,

  • 직원이 몇 명인지 세고 싶다면 COUNT
  • 급여 총합을 구하고 싶다면 SUM
  • 평균 급여를 구하고 싶다면 AVG

이런 식으로 여러 행을 하나의 값으로 요약할 때 집계 함수를 사용합니다.

쉽게 말하면 집계 함수는 “데이터를 모아서 요약하는 함수”입니다.

대표적인 집계 함수 5개

SQL 입문 단계에서는 아래 5개를 먼저 확실히 익히면 됩니다.

  • COUNT: 개수 세기
  • SUM: 합계 구하기
  • AVG: 평균 구하기
  • MAX: 최대값 구하기
  • MIN: 최소값 구하기

COUNT란 무엇인가

COUNT는 행의 개수를 세는 함수입니다.

SELECT COUNT(*)
FROM employees;

위 쿼리는 employees 테이블의 전체 행 수를 구합니다.

COUNT(*)와 COUNT(컬럼) 차이

  • COUNT(*): 전체 행 개수
  • COUNT(컬럼명): 해당 컬럼에서 NULL이 아닌 값 개수

이 차이는 SQLD에서도 자주 나오는 포인트입니다.

SUM이란 무엇인가

SUM은 숫자 데이터의 합계를 구하는 함수입니다.

SELECT SUM(salary)
FROM employees;

위 쿼리는 직원들의 급여 총합을 계산합니다.

즉, 여러 행의 숫자를 더해서 하나의 결과를 만드는 것이 SUM입니다.

AVG란 무엇인가

AVG는 숫자 데이터의 평균을 구하는 함수입니다.

SELECT AVG(salary)
FROM employees;

위 쿼리는 직원들의 평균 급여를 구합니다.

평균을 구할 때도 NULL은 보통 계산에서 제외된다는 점을 같이 기억하는 것이 좋습니다.

MAX와 MIN은 무엇인가

MAX는 가장 큰 값, MIN은 가장 작은 값을 구하는 함수입니다.

SELECT MAX(salary), MIN(salary)
FROM employees;

이 쿼리는 최고 급여와 최저 급여를 동시에 보여줍니다.

GROUP BY와 함께 보면 집계 함수가 더 중요해진다

집계 함수는 전체 데이터를 한 번에 요약할 수도 있지만, GROUP BY와 함께 사용하면 그룹별로 요약할 수도 있습니다.

예를 들어 부서별 직원 수를 구하고 싶다면 이렇게 작성할 수 있습니다.

SELECT department_id, COUNT(*) AS cnt
FROM employees
GROUP BY department_id;

이 경우 employees 전체를 한 번에 세는 것이 아니라, department_id별로 나누어 COUNT를 계산합니다.

집계 함수와 일반 컬럼을 같이 쓸 때 주의할 점

초보자가 많이 헷갈리는 부분 중 하나가 집계 함수와 일반 컬럼을 같이 SELECT에 쓰는 경우입니다.

예를 들어 아래처럼 쓰면 문제가 생길 수 있습니다.

SELECT department_id, AVG(salary)
FROM employees;

department_id를 함께 보여주려면 보통 GROUP BY department_id가 필요합니다.

집계 함수와 일반 컬럼을 함께 쓸 때는 GROUP BY가 필요한지 먼저 확인하는 습관이 중요합니다.

집계 함수를 표로 정리하면

함수 의미 예시
COUNT 개수 세기 직원 수
SUM 합계 총 급여
AVG 평균 평균 급여
MAX 최대값 최고 급여
MIN 최소값 최저 급여

초보자가 자주 하는 실수

자주 하는 실수 1

COUNT(*)와 COUNT(컬럼)의 차이를 무시하는 것

COUNT(*)는 전체 행 수, COUNT(컬럼)은 NULL이 아닌 값 개수라는 점을 구분해야 합니다.

자주 하는 실수 2

집계 함수와 일반 컬럼을 GROUP BY 없이 같이 쓰는 것

이런 경우 SQL 문법 오류나 의도와 다른 결과가 나올 수 있습니다.

자주 하는 실수 3

WHERE와 HAVING 위치를 헷갈리는 것

집계 결과에 조건을 걸 때는 HAVING을 생각해야 합니다. 예를 들어 COUNT(*)가 5 이상인 부서만 보고 싶다면 HAVING이 맞습니다.

비전공자는 이렇게 외우면 쉽다

  • COUNT = 몇 개인가
  • SUM = 모두 더하면 얼마인가
  • AVG = 평균은 얼마인가
  • MAX / MIN = 가장 큰 값 / 가장 작은 값
  • 집계 함수는 여러 행을 하나로 요약한다고 기억하면 쉽습니다.

핵심 요약

  • 집계 함수는 여러 행의 데이터를 하나의 값으로 요약하는 함수입니다.
  • 대표 함수는 COUNT, SUM, AVG, MAX, MIN입니다.
  • GROUP BY와 함께 쓰면 그룹별 집계가 가능합니다.
  • 집계 함수와 일반 컬럼을 같이 쓸 때는 GROUP BY를 먼저 확인해야 합니다.
  • COUNT(*)와 COUNT(컬럼)의 차이는 SQLD에서 자주 나오는 핵심 포인트입니다.

FAQ

집계 함수는 왜 필요한가요?

여러 행의 데이터를 개수, 합계, 평균 같은 하나의 결과로 요약하기 위해 필요합니다.

COUNT(*)와 COUNT(컬럼)은 무엇이 다른가요?

COUNT(*)는 전체 행 수를 세고, COUNT(컬럼)은 해당 컬럼에서 NULL이 아닌 값만 셉니다.

AVG는 NULL도 평균에 포함하나요?

보통 NULL은 평균 계산에서 제외됩니다.

집계 함수와 일반 컬럼을 같이 쓰려면 어떻게 해야 하나요?

대부분의 경우 GROUP BY를 함께 사용해야 합니다.

SQLD에서도 집계 함수가 자주 나오나요?

네. GROUP BY, HAVING, 서브쿼리와 함께 자주 출제되는 핵심 개념입니다.

반응형