모두CBT

다음 쿼리 문에 대한 설명으로 옳은 것은?SELECT 학과명, COUN… | [컴퓨터활용능력 1급 필기] 11년 1회차 기출문제 상세 페이지

1[컴퓨터활용능력 1급 필기] 11년 1회차
다음 쿼리 문에 대한 설명으로 옳은 것은?
SELECT 학과명, COUNT(*) AS [휴학자수] FROM 학생 GROUP BY 학과명 HAVING [재학구분]="휴학중"
1
구문의 오류로 인해 실행될 수 없는 쿼리이다.
2
쿼리를 실행하면 5개의 필드가 출력된다.
3
학과명 별로 휴학중인 학생들의 인원수를 표시한다.
4
휴학 중인 학생 수가 가장 많은 학과를 표시한다.
해설

GROUP BY로 그룹을 묶은 쿼리에서 HAVING 절은 그룹 단위의 조건을 지정하는 곳입니다. 그래서 HAVING에는 GROUP BY에 쓰인 그룹화 기준 필드이거나 COUNT·SUM·AVG 같은 집계 함수의 결과만 올 수 있습니다.

그런데 이 쿼리의 HAVING에 쓰인 [재학구분]은 GROUP BY 절에 들어 있지도 않고 집계 함수로 묶이지도 않은, 개별 레코드 단위의 필드입니다. 한 학과 그룹 안에는 재학·휴학·졸업이 섞여 있을 수 있어 그룹 하나에 대해 재학구분 값을 하나로 정할 수 없으므로, 이 문장은 구문 오류로 실행되지 않습니다. 학과명별 휴학자 수를 구하려면 FROM 학생 WHERE [재학구분]="휴학중" GROUP BY 학과명처럼 그룹으로 묶기 전 단계인 WHERE 절에서 걸러야 합니다.

또한 SELECT 절에는 학과명COUNT(*) AS [휴학자수] 두 항목만 있으므로, 정상 실행된다 해도 출력되는 필드는 2개뿐입니다. 인원수가 가장 많은 학과만 뽑으려면 별도의 정렬(ORDER BY)과 상위 값 지정(TOP)이 필요하므로, 이 쿼리로는 그런 결과도 얻을 수 없습니다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.