SQL 기초집LESSON 11
GROUP BY와 HAVING
난이도입문 → 초급
예상 시간30분
선수지식이전 강의
11강. GROUP BY와 HAVING
1. 이번 강의에서 해결할 문제
전체 평균만으로는 모드나 지역별 차이를 볼 수 없습니다. 같은 분류의 행을 그룹으로 묶고 의미 있는 그룹만 남깁니다.
2. 학습 목표
3. 핵심 개념
WHERE는 그룹화 전 개별 행, HAVING은 그룹화 후 집계 결과를 필터링합니다. SELECT의 비집계 열은 원칙적으로 GROUP BY에 포함해야 이식 가능하고 결정적인 SQL이 됩니다.
4. 단계별 SQL 예시
대상 테이블: games, players (읽기 전용)
파일 경로: C:\dev\game-ranking-db\sql\11-grouping.sql
sql/11-grouping.sql
SELECT
mode,
COUNT(*) AS game_count,
ROUND(AVG(duration_seconds), 1) AS average_seconds
FROM games
GROUP BY mode
ORDER BY game_count DESC, mode;
SELECT
region,
COUNT(*) AS player_count
FROM players
WHERE created_at < '2099-01-01'
GROUP BY region
HAVING COUNT(*) >= 1
ORDER BY player_count DESC, region;
PowerShell · 실행 순서
sqlite3 -header -box .\data\game_ranking.db ".read .\sql\11-grouping.sql"
5. 쿼리가 동작하는 이유
GROUP BY가 같은 mode 또는 region 값을 한 그룹으로 묶습니다. 각 그룹마다 집계가 한 번 계산됩니다. HAVING은 계산된 player_count 조건에 해당하는 그룹만 남깁니다.
6. 자주 하는 실수와 안전한 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2GROUP BY와 HAVING 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
11강. GROUP BY와 HAVING 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.