모두CBT

20-3[수강] 테이블에서 과목별 점수 평균이 90 이상인 과목에 대해… | 2020년 정보처리기사실기 3회차 기출문제 상세 페이지

15

20-3

[수강] 테이블에서 과목별 점수 평균이 90 이상인 과목에 대해 과목명, 최소점수, 최대점수를 구하는 SQL 문을 작성하시오.

  • GROUP BY와 HAVING을 반드시 사용하고, WHERE 절은 쓰지 않는다.
  • 최소점수·최대점수는 별칭(AS)으로 지정한다.
  • 대소문자는 구분하지 않으며, 끝의 세미콜론(;)은 생략해도 된다.
  • 결과 행의 순서는 채점하지 않는다.

[수강]

과목코드과목명등급점수
3100자료구조A92
3200네트워크B+86
3100자료구조B+88
3300보안A+97
3200네트워크A91
3300보안B+89

[결과]

과목명최소점수최대점수
자료구조8892
보안8997
해설

SELECT 과목명, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 수강 GROUP BY 과목명 HAVING AVG(점수) >= 90;


[해설]

과목명으로 묶은 뒤(GROUP BY 과목명) 그룹 단위 조건은 HAVING AVG(점수) >= 90으로 건다. WHERE는 그룹 이전 행 단위 조건이라 집계 함수를 쓸 수 없다.

  • 자료구조: (92+88)/2 = 90 → 포함(이상)
  • 네트워크: (86+91)/2 = 88.5 → 제외
  • 보안: (97+89)/2 = 93 → 포함

각 그룹의 최솟값·최댓값은 MIN(점수) AS 최소점수, MAX(점수) AS 최대점수로 구한다.

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