다음 조건을 만족하면서, 과목별 점수의 평균이 90이 상인 과목이름, … | 2020년 정보처리기사실기 3회차 기출문제 상세 페이지
8
다음 조건을 만족하면서, 과목별 점수의 평균이 90이 상인 과목이름, 최소점수, 최대점수를 구하는 SQL문을 작성하시오.
- 대소문자를 구분하지 않는다.
- WHERE 구분을 사용하지 않는다.
- GROUP BY, HAVING구문을 반드시 사용한다.
- 세미콜론(;)은 생략 가능하다.
- 별칭(AS)을 사용해야 한다.

해설
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적
GROUP BY 과목이름 HAVING AVG(점수) >= 90;
[해설]
그룹별 집계값으로 조건을 걸어야 하므로 GROUP BY 과목이름으로 과목별 그룹을 만든 뒤 HAVING AVG(점수) >= 90으로 평균 조건을 검사하는 구조가 핵심이다.
WHERE 절은 그룹으로 묶기 전의 개별 행에만 조건을 걸 수 있어 AVG 같은 집계 함수를 쓸 수 없고, 그룹 단위 조건은 반드시 HAVING에서 처리해야 한다.
MIN, MAX 함수로 그룹별 최소·최대 점수를 구하고 각각 최소점수, 최대점수라는 별칭(AS)을 붙여 문제의 요구 조건을 맞춘다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.