🖇 COUNT: 개수 세기
🖇 SUM, AVG: 합계와 평균
🖇 MAX, MIN: 최댓값과 최솟값
🖇 집계 함수의 특징
SQL로 데이터를 요약하고 분석할 때 가장 먼저 접하게 되는 것이
바로 집계 함수(Aggregate Function)이다.
"총 몇 건인가요?", "평균은 얼마죠?", "최댓값은?" 과 같은 질문에 직접적으로 답할 수 있게 해준다.
이번 글에서는 자주 사용하는 5가지 집계 함수인
COUNT, SUM, AVG, MAX, MIN 을
예제와 함께 정리하고, 자주 쓰이는 활용법까지 살펴보았다.
특히 조건을 걸어 카운트하는 방법, NULL 처리 방식, 집계 함수끼리 계산하기 등은 실용적으로 사용되니 참고가 되었으면 한다.
COUNT: 개수 세기COUNT(*)
모든 행의 개수를 카운트한다.
NULL 값을 포함
-> 컬럼의 NULL값 유무를 체크할 수 없다.
COUNT(컬럼명)
-- 전체 컬럼과 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(컬럼명)
✓ 높고 낮은 순(날짜순, 알파벳 순(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문 등과도 많이 사용된다.
데이터 분석에서 자주 활용되는 핵심 기능이니 꼭 직접 실습하며 익혀 보기를 추천한다.