데이터를 요약·집계하는 것은 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 절의 사용법을 반드시 숙지하세요.
'프로그래밍' 카테고리의 다른 글
인덱스와 성능 향상 전략 – SQLD 필수 개념 정리 (2) | 2025.08.05 |
---|---|
서브쿼리와 인라인 뷰 – SQLD 필수 개념 정리 (2) | 2025.08.05 |
JOIN의 모든 것 – 관계형 데이터베이스의 핵심 연결 기술 (2) | 2025.08.04 |
SELECT 구문과 조건절 완전정복 (4) | 2025.08.04 |
SQL 기본 문법 총정리 (DDL, DML, DCL) (0) | 2025.08.02 |