SQL에서 데이터를 조회할 때 중요한 건 “행 하나씩 보는 것”이 아니라 여러 데이터를 묶어서 요약하는 것이다.
이때 사용하는 것이 GROUP BY와 집계 함수이며, 데이터를 기준별로 묶고 합계·평균·개수를 계산하는 구조로 이해하면 된다.
집계 함수가 필요한 이유
테이블을 그대로 조회하면 이런 형태다.
userID | amount
----------------
A | 3
A | 5
B | 2
이 상태에서는 사용자별 총 구매량을 바로 알 수 없다.
👉 그래서 집계 함수가 필요하다.
대표 집계 함수
함수 의미
| SUM | 합계 |
| AVG | 평균 |
| COUNT | 개수 |
| MIN | 최소값 |
| MAX | 최대값 |
GROUP BY의 의미
GROUP BY는 같은 값을 가진 데이터를 하나로 묶는 역할을 한다.
select userid, sum(amount)
from buytbl
group by userid;
👉 결과
A → 8
B → 2
즉, userID 기준으로 데이터를 묶고 SUM으로 합계를 계산한다.
GROUP BY는 단독으로 의미가 없다
이건 많이 헷갈리는 부분이다.
select userid
from buytbl
group by userid;
👉 가능은 하지만 의미는 제한적이다.
GROUP BY는 반드시 집계 함수와 같이 써야 의미 있는 결과가 나온다.
고객별 총 구매 수량
select userid, sum(amount) as `총 구매수량`
from buytbl
group by userid;
👉 사용자별로 구매 수량 합계 계산
고객별 총 구매 금액
select userid, sum(price * amount) as `총구매금액`
from buytbl
group by userid;
👉 단순 컬럼이 아니라 계산식도 집계 가능
AVG | 평균 계산
select avg(amount)
from buytbl;
👉 전체 평균
COUNT 사용법
select count(*)
from usertbl;
👉 전체 행 개수
select count(mobile1)
from usertbl;
👉 NULL 제외하고 개수
핵심 차이
COUNT(*) → 전체 행
COUNT(컬럼) → NULL 제외
MAX와 일반 컬럼을 같이 쓸 때 주의
이건 실전에서 자주 틀린다.
select name, max(height)
from usertbl;
👉 오류 발생
이유:
- name은 여러 개
- max(height)는 하나
👉 기준이 맞지 않는다
가장 키 큰 사람 조회 방법
방법 1. 서브쿼리
select name, height
from usertbl
where height = (
select max(height)
from usertbl
);
방법 2. 정렬 + LIMIT
select name, height
from usertbl
order by height desc
limit 1;
👉 실전에서는 이 방법도 많이 사용
GROUP BY 핵심 구조
GROUP BY 기준컬럼
→ 데이터를 묶는다
→ 집계 함수로 계산한다
구현 관점 핵심 포인트
1. GROUP BY는 묶는 기준
userID별, 날짜별, 카테고리별
2. 집계 함수는 계산 역할
SUM, AVG, COUNT
3. 컬럼 선택 규칙
- GROUP BY에 없는 컬럼은 집계 함수와 같이 써야 한다
4. COUNT는 NULL을 제외한다
COUNT(컬럼) → NULL 제외
GROUP BY는 데이터를 기준별로 묶고, 집계 함수로 요약 결과를 만드는 SQL 핵심 기능이다.
'Data Analytics > SQL' 카테고리의 다른 글
| SQL ORDER BY와 LIMIT 정리 | 정렬하고 상위 N개 데이터 조회하기 (0) | 2026.05.19 |
|---|---|
| SQL WHERE와 HAVING 차이 정리 | 원본 데이터 필터와 집계 결과 필터 (0) | 2026.05.19 |
| SQL 서브쿼리 정리 | 쿼리 안에 쿼리를 넣는 이유와 ANY, ALL 차이 (0) | 2026.05.18 |
| SQL WHERE 조건절 정리 | AND, BETWEEN, IN, LIKE, IS NULL 한 번에 이해하기 (0) | 2026.05.18 |
| SQL INSERT와 SELECT 기본 정리 | 데이터 입력과 조회 흐름 이해하기 (0) | 2026.05.18 |
