728x90
💡 주제: 조건문 안의 SELECT, 그룹 조건 필터링까지 실무형 SQL 스킬 익히기
🧩 오늘의 학습 목표
- 서브쿼리(Subquery)의 개념과 활용법을 익힌다
- 집계 함수(SUM, AVG, COUNT 등)의 사용법을 이해한다
- HAVING절을 통해 그룹 결과에 조건을 거는 방법을 익힌다
🎯 이론 설명
✅ 1. 서브쿼리 (Subquery)
서브쿼리란?
- SQL 문 안에서 또 다른 SELECT 문을 사용하는 구조
- 주로 WHERE, FROM, SELECT 절 안에 사용
📌 예시 1: 특정 평균 이상인 학생 조회
sql
복사편집
SELECT name, score FROM student WHERE score > (SELECT AVG(score) FROM student);
- 내부 쿼리: 전체 평균 점수
- 외부 쿼리: 그보다 점수가 높은 학생 목록 조회
📌 예시 2: 다른 테이블의 값을 조건으로 활용
sql
복사편집
SELECT name FROM employee WHERE dept_id IN (SELECT dept_id FROM department WHERE location = '서울');
서울에 위치한 부서에 소속된 직원만 조회
✅ 2. 집계 함수 (Aggregate Functions)
집계 함수는 다수의 행 데이터를 요약하는 함수입니다.
주로 GROUP BY와 함께 사용됩니다.
함수의미
SUM() | 합계 |
AVG() | 평균 |
COUNT() | 개수 |
MAX() | 최대값 |
MIN() | 최소값 |
📌 예시:
sql
복사편집
SELECT department, AVG(score) FROM student GROUP BY department;
학과별 평균 점수 계산
✅ 3. HAVING 절
HAVING은 GROUP BY로 묶은 결과에 조건을 걸 때 사용합니다.
WHERE은 행 필터링, HAVING은 그룹 필터링!
📌 예시: 평균 점수가 70 이상인 학과만 조회
sql
복사편집
SELECT department, AVG(score) FROM student GROUP BY department HAVING AVG(score) >= 70;
WHERE AVG(score) >= 70 이라고 쓰면 에러 발생! HAVING을 써야 함.
📝 기출문제 예제
문제: 다음 SQL 문장의 설명으로 옳은 것은?
sql복사편집SELECT department, COUNT(*) FROM employee GROUP BY department HAVING COUNT(*) > 5;① 직원이 5명 이상인 부서를 조회
② 부서 수를 조회
③ 직원 수가 정확히 5명인 부서를 조회
④ 모든 부서와 직원 수를 조회✅ 정답: ①
🧠 해설: GROUP BY department로 부서별 그룹을 만들고,
HAVING COUNT(*) > 5로 직원이 5명 이상인 그룹만 남깁니다.
💡 오늘의 정리 포인트
- ✅ 서브쿼리는 WHERE, FROM, SELECT 절 내부에 들어가는 SELECT 문
- ✅ 집계 함수는 여러 행을 계산하여 하나의 결과를 출력
- ✅ HAVING은 GROUP BY 후 조건을 줄 때 사용, WHERE은 그룹 이전에 사용
- ✅ 실기에서 많이 나오는 평균 이상 구하기, 최고값 찾기 유형 자주 연습할 것!
728x90
'정보처리기사' 카테고리의 다른 글
📘 [7일차] 관계 대수와 관계 해석 완전 정리 (0) | 2025.05.04 |
---|---|
📘 [6일차] 트랜잭션과 무결성 제약조건 완전 정복 (0) | 2025.05.03 |
📘 [4일차] SQL 기초 문법 완전 정리 – SELECT, WHERE, GROUP BY, JOIN (0) | 2025.05.03 |
📘 [3일차] 데이터베이스 정규화(Normalization) 완전 정복 (0) | 2025.05.03 |
📘 [2일차] 기본키(Primary Key)와 외래키(Foreign Key) 완전 정복 (1) | 2025.05.02 |