아래는 [학생] 테이블의 디자인 보기와 [학생] 테이블을 이용한 SQL… | [컴퓨터활용능력 1급 필기] 15년 3회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 15년 3회차
아래는 [학생] 테이블의 디자인 보기와 [학생] 테이블을 이용한 SQL문이다. 다음 중 아래 SQL문의 실행 결과에 대한 설명으로 옳은 것은?[학생] 테이블 디자인 보기
| 필드 이름 | 데이터 형식 |
|---|---|
| 학번 (기본 키) | 텍스트 |
| 성명 | 텍스트 |
| 동아리 | 텍스트 |
SELECT 동아리 FROM 학생
GROUP BY 동아리
HAVING COUNT(*)>2;
1
같은 성명을 가진 학생이 3명 이상인 동아리들을 검색한다.
2
동아리를 3개 이상 가입한 학생들을 검색한다.
3
3개의 동아리 중 하나라도 가입한 학생들을 검색한다.
4
동아리에 가입한 학생이 3명 이상인 동아리들을 검색한다.
해설
[학생] 테이블은 학번(기본 키)·성명·동아리 세 개의 텍스트 필드로 이루어져 있으므로, 한 레코드는 학생 한 명과 그 학생이 가입한 동아리를 나타낸다.
SQL문은 GROUP BY 동아리로 같은 동아리 값을 가진 레코드들을 하나의 그룹으로 묶고, HAVING COUNT(*)>2로 그룹에 속한 레코드 수가 2보다 큰, 즉 3개 이상인 그룹만 남긴다. 출력하는 열은 동아리 하나뿐이다.
한 레코드가 학생 한 명이므로 그룹의 레코드 수는 곧 그 동아리에 가입한 학생 수가 된다. 결과적으로 가입한 학생이 3명 이상인 동아리의 이름 목록이 나온다. HAVING은 이렇게 그룹으로 묶은 뒤 그룹 전체에 적용하는 조건이며, 개별 레코드를 먼저 걸러내는 WHERE와 구분해야 한다. 또 결과로 나오는 것은 학생이 아니라 동아리라는 점, 기본 키가 학번이라 한 학생이 여러 동아리를 가진 형태는 이 테이블 구조에서 표현되지 않는다는 점도 함께 확인할 수 있다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.