DB

[MySQL] SELECT + COUNT, SUM, AVG, MAX, MIN 집계 함수 완전 정복

인생아 2025. 6. 25. 13:41
반응형

MySQL에서 데이터를 분석할 때 가장 자주 사용되는 구문 중 하나가 바로 집계 함수(aggregate functions)이다.
집계 함수는 데이터를 세어보고, 더하고, 평균을 내고, 최댓값/최솟값을 구하는 데 필수적이다.

📌 COUNT() – 행의 개수를 세는 함수

COUNT()는 지정된 컬럼이나 전체 행의 개수를 반환하는 함수이다.

SELECT COUNT(*) FROM users;
  • users 테이블의 전체 행 수를 반환

특정 조건을 만족하는 행만 세고 싶을 경우 WHERE절과 함께 사용한다.

SELECT COUNT(*) FROM users WHERE age >= 30;
  • 30세 이상 사용자 수 조회
반응형

📌 SUM() – 총합을 계산하는 함수

SUM() 함수는 숫자형 컬럼의 합계를 반환한다.

SELECT SUM(price) FROM orders;
  • orders 테이블의 모든 주문 금액 합계를 반환

조건을 추가하면 특정 그룹의 합계를 계산할 수도 있다.

SELECT SUM(price) FROM orders WHERE user_id = 10;

📌 AVG() – 평균값을 계산하는 함수

AVG()는 숫자형 컬럼의 평균값을 반환한다.

SELECT AVG(age) FROM users;
  • 전체 사용자의 평균 나이 조회

📌 MAX() – 최댓값 구하기

SELECT MAX(score) FROM students;
  • students 테이블의 최고 점수 확인
반응형

📌 MIN() – 최솟값 구하기

sql
복사편집
SELECT MIN(score) FROM students;
  • students 테이블의 최저 점수 확인

GROUP BY와 함께 사용하기

집계 함수는 GROUP BY와 함께 사용하면 그룹별 통계를 낼 수 있다.

SELECT department, COUNT(*) AS 인원수
FROM employees
GROUP BY department;
  • 부서별 직원 수를 집계
SELECT category, SUM(price) AS 총합계
FROM products
GROUP BY category;
  • 상품 카테고리별 총 가격 계산
반응형

🧪 복합 집계 예제

SELECT 
  department, 
  COUNT(*) AS 인원수,
  AVG(salary) AS 평균급여,
  MAX(salary) AS 최고급여,
  MIN(salary) AS 최저급여
FROM employees
GROUP BY department;
  • 부서별 인원 수, 평균급여, 최고/최저 급여를 한 번에 조회할 수 있는 강력한 쿼리

⚠️ 집계 함수 사용 시 주의사항

  • NULL 값은 무시된다. 예를 들어 AVG()는 NULL을 포함하지 않음
  • COUNT(*)는 NULL 포함 모든 행을 세고, COUNT(컬럼)은 NULL을 제외함

📎 공식 문서 참고

MySQL Aggregate Functions (공식 문서)
https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html

반응형