문제
다음 중 [회원] 테이블에서 '등급점수'가 80 이상인 회원을 등급점수가 높은 순으로 조회하되, 등급점수가 같으면 '가입일'이 빠른(오름차순) 순서로 모든 필드를 표시하는 SQL문으로 옳은 것은?
① SELECT * FROM 회원 ORDER BY 등급점수 DESC, 가입일 ASC WHERE 등급점수 >= 80; ② SELECT * FROM 회원 WHERE 등급점수 >= 80 ORDER BY 등급점수 ASC, 가입일 DESC; ③ SELECT * FROM 회원 WHERE 등급점수 >= 80 ORDER BY 등급점수 DESC, 가입일 ASC; ④ SELECT * FROM 회원 ORDER BY 등급점수 DESC WHERE 등급점수 >= 80, 가입일 ASC;
정답
3번
해설
정답: 3. WHERE 절이 ORDER BY 절보다 앞에 와야 하고, 높은 순은 DESC, 빠른(오름차순) 순은 ASC이므로 WHERE 등급점수 >= 80 ORDER BY 등급점수 DESC, 가입일 ASC가 옳다.
오답 풀이
- 1번: ORDER BY가 WHERE보다 앞에 와서 절 순서가 틀렸다.
- 2번: 등급점수를 ASC로 정렬해 낮은 순이 되어 옳지 않다.
- 3번: 절 순서와 정렬 방향이 모두 옳다.
- 4번: ORDER BY 뒤에 WHERE가 와서 절 순서가 틀렸다.
보충 개념 SELECT 문의 절 순서는 SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY이며, 정렬은 DESC(내림차순)·ASC(오름차순, 기본값)로 지정한다.