문제
아래는 [학생] 테이블의 디자인 보기와 [학생] 테이블을 이용한 SQL문이다. 다음 중 아래 SQL문의 실행 결과에 대한 설명으로 옳은 것은?
[학생] 테이블 디자인 보기
| 필드 이름 | 데이터 형식 | 비고 |
|---|---|---|
| 학번 | 텍스트 | 기본 키 |
| 성명 | 텍스트 | |
| 동아리 | 텍스트 |
① 같은 성명을 가진 학생이 3명 이상인 동아리들을 검색한다. ② 동아리를 3개 이상 가입한 학생들을 검색한다. ③ 3개의 동아리 중 하나라도 가입한 학생들을 검색한다. ④ 동아리에 가입한 학생이 3명 이상인 동아리들을 검색한다.
정답
4번
해설
정답: 4. 이 SQL은 학생을 ‘동아리’별로 그룹화한 뒤, 각 그룹의 행 수 COUNT(*)가 2보다 큰(즉 3명 이상인) 동아리만 추출한다. 따라서 소속 학생이 3명 이상인 동아리를 검색한다.
오답 풀이
- 1번: 성명이 아니라 동아리로 그룹화하므로 ‘같은 성명’ 기준은 옳지 않다.
- 2번: 한 학생의 동아리 가입 개수가 아니라 동아리별 학생 수를 세므로 옳지 않다.
- 3번: 특정 동아리 가입 여부를 묻는 것이 아니므로 옳지 않다.
- 4번: 동아리별 학생 수가 3명 이상인 동아리를 검색하므로 옳다.
보충 개념 GROUP BY는 지정 열로 행을 묶고, HAVING은 그룹 단위 조건을 건다. COUNT(*)>2는 그룹의 행 수가 3 이상임을 의미한다.