[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개의 댓글