본문 바로가기
프로그래밍

GROUP 함수와 집계 처리 – SQLD 완벽 정리

by 유형제맘 2025. 8. 5.

데이터를 요약·집계하는 것은 SQL에서 매우 중요한 작업입니다. 이 글에서는 SQLD 시험 대비를 위한 GROUP 함수(집계 함수)와 GROUP BY 절의 사용법, 그리고 HAVING 절을 포함한 집계 처리 방법을 완전히 이해할 수 있도록 설명합니다.

✅ 집계 함수(Aggregate Function)란?

집계 함수는 여러 행을 입력값으로 받아 하나의 결과값을 반환하는 함수입니다. 일반적으로 GROUP BY와 함께 사용되며, 데이터의 요약 정보를 구할 때 쓰입니다.


자주 쓰이는 집계 함수 목록

함수명 설명
COUNT() 행의 개수(레코드 수)를 계산
SUM() 전체 합계를 계산
AVG() 평균값을 계산
MAX() 최대값을 반환
MIN() 최소값을 반환

📌 집계 함수 기본 사용 예제

SELECT COUNT() AS 총회원수
FROM 회원;
SELECT AVG(급여) AS 평균급여
FROM 직원;

참고: COUNT()는 NULL을 포함한 모든 행을 계산하며, COUNT(컬럼명)은 해당 컬럼이 NULL이 아닌 경우만 계산합니다.

🧱 GROUP BY 절

GROUP BY는 특정 컬럼 값을 기준으로 데이터를 그룹화하고, 그룹별로 집계 함수를 적용할 때 사용합니다.

예제: 부서별 평균 급여 구하기

SELECT 부서번호, AVG(급여) AS 평균급여
FROM 직원
GROUP BY 부서번호;

이 쿼리는 각 부서별로 급여 평균을 구해서 반환합니다.

⚠️ GROUP BY 절 주의사항

  • SELECT 절에 있는 컬럼은 반드시 GROUP BY에 있거나 집계 함수로 묶여야 합니다.
  • 여러 컬럼으로 그룹화도 가능: GROUP BY 부서번호, 직책

🧹 HAVING 절 – 그룹 조건 처리

HAVING은 집계된 결과에 조건을 걸 때 사용합니다. WHERE은 그룹화 전에 사용되고, HAVING은 그룹화 후 필터링입니다.

예제: 평균 급여가 300 이상인 부서만 보기

SELECT 부서번호, AVG(급여) AS 평균급여
FROM 직원
GROUP BY 부서번호
HAVING AVG(급여) >= 300;

📌 WHERE 절에는 집계 함수 사용 ❌
📌 HAVING 절에는 집계 함수 사용 ⭕

🔁 GROUP BY + HAVING 실전 예제

예제 1: 고객별 총 주문 금액 구하기

SELECT 고객ID, SUM(주문금액) AS 총주문금액
FROM 주문
GROUP BY 고객ID;

예제 2: 주문 횟수가 5회 이상인 고객 찾기

SELECT 고객ID, COUNT() AS 주문횟수
FROM 주문
GROUP BY 고객ID
HAVING COUNT() >= 5;

🧠 함께 기억하면 좋은 팁

  • ORDER BY는 집계 결과에도 적용 가능
  • GROUP BY 없이도 집계 함수는 전체 테이블에 적용됨
  • NULL은 COUNT() 외 다른 집계 함수에서 제외됨 (AVG, SUM, 등등)

📝 요약 정리

구문 설명
GROUP BY 그룹 기준 설정
HAVING 그룹화 후 조건 설정
집계 함수 COUNT, SUM, AVG, MAX, MIN 등
ORDER BY 그룹 결과 정렬 가능 (예: ORDER BY AVG(급여) DESC)

GROUP 함수와 집계 처리는 단순한 SELECT 구문을 넘어 데이터 분석의 시작점이 되는 기능입니다. SQLD 시험에서도 자주 출제되므로, 집계 함수와 GROUP BY, HAVING 절의 사용법을 반드시 숙지하세요.