모두CBT

성적 테이블(윗쪽 그림)에 대해 아래쪽 그림과 같은 실행 결과를 얻기 … | [컴퓨터활용능력 1급 필기] 10년 3회차 기출문제 상세 페이지

1[컴퓨터활용능력 1급 필기] 10년 3회차
성적 테이블(윗쪽 그림)에 대해 아래쪽 그림과 같은 실행 결과를 얻기 위한 SQL 질의문으로 옳은 것은?

성적 : 테이블

학번학과점수
100멀티100
200인터넷88
300인터넷92
400멀티80
500멀티90
600전산78
700간호99
800인터넷57
900간호65
1000유아78

학과별평균

학과점수평균
간호82
멀티90
인터넷79
1
SELECT 학과, Avg(점수) AS 점수평균 FROM 성적 GROUP BY 학과 WHERE Count(*)>=2
2
SELECT 학과, Avg(점수) AS 점수평균 FROM 성적 GROUP BY 학과 HAVING Count(*)>=2
3
SELECT 학과, Avg(점수) AS 점수평균 FROM 성적 GROUP BY 점수 WHERE Count(*)>=2
4
SELECT 학과, Avg(점수) AS 점수평균 FROM 성적 GROUP BY 점수 HAVING Count(*)>=2
해설

실행 결과 창에는 간호 82, 멀티 90, 인터넷 79 세 학과만 점수평균과 함께 나타난다. 성적 테이블의 인원은 멀티 3명(100·80·90), 인터넷 3명(88·92·57), 간호 2명(99·65), 전산 1명(78), 유아 1명(78)이므로, 소속 인원이 2명 이상인 학과만 남긴 결과임을 알 수 있다.

따라서 GROUP BY 학과로 학과별로 묶어 Avg(점수)를 계산한 뒤, 묶인 그룹에 대한 조건인 '개수 2 이상'을 HAVING Count(*)>=2로 지정해야 한다. 실제로 계산하면 (99+65)/2=82, (100+80+90)/3=90, (88+92+57)/3=79로 결과 창의 값과 정확히 맞아떨어진다.

WHERE절은 그룹으로 묶기 전 개별 레코드에 적용되는 조건이라 Count 같은 집계 함수를 조건으로 쓸 수 없고, 그룹 기준을 학과가 아니라 점수로 잡으면 같은 점수끼리 묶여 학과별 평균이라는 결과 자체가 나오지 않는다.

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