[SQL] 집계 함수: COUNT, SUM, AVG, MAX, MIN

jul ee·2025년 4월 4일

데이터 성장기

목록 보기
12/139

🖇  COUNT: 개수 세기
🖇  SUM, AVG: 합계와 평균
🖇  MAX, MIN: 최댓값과 최솟값
🖇  집계 함수의 특징


SQL로 데이터를 요약하고 분석할 때 가장 먼저 접하게 되는 것이
바로 집계 함수(Aggregate Function)이다.

"총 몇 건인가요?", "평균은 얼마죠?", "최댓값은?" 과 같은 질문에 직접적으로 답할 수 있게 해준다.

이번 글에서는 자주 사용하는 5가지 집계 함수인

     COUNT, SUM, AVG, MAX, MIN

예제와 함께 정리하고, 자주 쓰이는 활용법까지 살펴보았다.

특히 조건을 걸어 카운트하는 방법, NULL 처리 방식, 집계 함수끼리 계산하기 등은 실용적으로 사용되니 참고가 되었으면 한다.



🖇  COUNT: 개수 세기

COUNT(*)

  • 모든 행의 개수를 카운트한다.

  • NULL 값을 포함
    ->   컬럼의 NULL값 유무를 체크할 수 없다.

COUNT(컬럼명)

  • 해당 컬럼의 NULL이 아닌 값만 카운트한다.
    -   NULL 값을 제외한 컬럼명의 행의 개수를 카운트
-- 전체 컬럼과 weathersit 컬럼의 개수 확인하기
 
SELECT COUNT(*) AS cnt,
       COUNT(weathersit) AS weather_cnt
FROM bike



🖇  SUM, AVG: 합계와 평균

SUM(컬럼명)

  • 해당 컬럼의 합계를 계산한다.

AVG(컬럼명)

  • 해당 컬럼의 평균을 계산한다.
-- 2011년 3월 `casual` 및 `registered` 이용자 수의 합계 구하기

SELECT SUM(casual) AS casual_sum,
       SUM(registered) AS registered_sum
FROM bike
WHERE yr = 2011
      AND mnth = 'Mar'

SUM은 값들의 총합, COUNT는 값의 개수이다.
아래의 코드에서 확인해 보자.


SELECT SUM(casual) AS casual_sum,
       SUM(registered) AS registered_sum,
       COUNT(casual) AS cnt
FROM bike
WHERE yr = 2011
      AND mnth = 'Mar'



🖇  MAX, MIN: 최댓값과 최솟값

MAX(컬럼명)

  • 해당 컬럼의 값 중 가장 큰 값

MIN(컬럼명)

  • 해당 컬럼의 값 중 가장 작은 값

✓  높고 낮은 순(날짜순, 알파벳 순(Z-A)등)으로 연산하여 결과를 출력한다.

-- 가장 큰 casual의 이용건수와 가장 작은 registered의 이용건수 확인하기
 
SELECT MAX(casual) AS casual_max,
       MIN(registered) AS registered_min
FROM bike

✓  문자형 컬럼에도 적용 가능하며, 알파벳 순서 기준으로 동작한다.

-- weekday 컬럼에 max 함수 적용해 보기

SELECT MAX(weekday) AS max_week
FROM bike



🖇  집계 함수의 특징

집계 함수에서 조건 사용하기

집계 함수 내부에서 CASE WHEN 조건을 사용하여,
조건에 맞는 데이터만 집계할 수 있다.

-- `weekday`가 토요일 또는 일요일인 경우만 `휴일`로 카운트하기
-- 'Sunday'나 'Saturday'가 아닌 경우에는 값이 없는 것처럼 처리 (ELSE NULL)

SELECT COUNT(
             CASE WHEN weekday = 'Sunday' THEN '휴일'
                  WHEN weekday = 'Saturday' THEN '휴일'
                  ELSE NULL
             END
             ) AS "휴일기간"
FROM bike;

조건 필터링 후 카운트하기

-- 봄 기간의 데이터 개수 카운트하기

SELECT COUNT(season) AS '봄기간데이터개수'
FROM bike
WHERE season = 'spring'

집계 함수끼리 계산하기

집계함수의 결과값끼리 계산할 수 있다.

SUM(컬럼명) / COUNT(컬럼명)

-- 평균 직접 구하기

SELECT SUM(cnt) / COUNT(cnt) AS avg_cnt
FROM bike
WHERE season = 'spring';


지금까지 살펴본 집계 함수를 정리해 보자.

집계 함수를 조건문과 조합하거나 별칭을 지정하면 더욱 직관적인 결과를 도출할 수 있었다.

함수설명
COUNT(*)모든 행의 개수 (NULL 포함)
COUNT(컬럼)해당 컬럼의 NULL 제외 개수
SUM(컬럼)해당 컬럼 값의 합계
AVG(컬럼)해당 컬럼 값의 평균
MAX(컬럼)해당 컬럼 값 중 최댓값
MIN(컬럼)해당 컬럼 값 중 최솟값

단독으로도 유용하지만
이후에 다룰 GROUP BY, HAVING, JOIN 문 등과도 많이 사용된다.

데이터 분석에서 자주 활용되는 핵심 기능이니 꼭 직접 실습하며 익혀 보기를 추천한다.

profile
AI에 관심을 가지고, 데이터로 가치를 만들어 나가는 과정을 기록합니다.

0개의 댓글