문제
다음 중 학생 테이블에서 평점이 3.0 이상인 학생을, 학년이 높은 순으로(같은 학년이면 평점이 낮은 순으로) 모든 필드를 조회하는 SQL문으로 옳은 것은?
① SELECT * FROM 학생 WHERE 평점 >= 3.0 ORDER BY 학년 DESC, 평점 ASC; ② SELECT * FROM 학생 ORDER BY 학년 DESC, 평점 ASC WHERE 평점 >= 3.0; ③ SELECT * FROM 학생 WHERE 평점 >= 3.0 ORDER BY 학년 ASC, 평점 DESC; ④ SELECT * FROM 학생 WHERE 평점 >= 3.0 ORDER BY 평점 ASC, 학년 DESC;
정답
1번
해설
정답: 1. 평점 3.0 이상 조건은 WHERE 절에, 학년 내림차순·평점 오름차순 정렬은 ORDER BY 절에 쓰며, WHERE는 ORDER BY보다 앞에 와야 한다. ①이 조건과 정렬 순서를 모두 올바르게 표현했다.
오답 풀이
- 1번: WHERE 다음 ORDER BY 학년 DESC, 평점 ASC로 조건·정렬이 모두 맞으므로 옳다.
- 2번: ORDER BY 뒤에 WHERE가 와서 문법에 맞지 않으므로 옳지 않다.
- 3번: 학년 ASC, 평점 DESC로 정렬 방향이 반대이므로 옳지 않다.
- 4번: 평점을 먼저 정렬해 정렬 우선순위가 바뀌었으므로 옳지 않다.
보충 개념 SQL의 절 순서는 SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY이다.