문제
다음 중 직원(사원번호, 부서명, 이름, 나이, 근무년수, 급여) 테이블에서 '근무년수'가 3 이상인 직원들을 나이가 많은 순서대로 조회하되, 같은 나이일 경우 급여의 오름 차순으로 모든 필드를 표시하는 SQL문은?
① select * from 직원 where 근무년수 >= 3 order by 나이, 급여 ② select * from 직원 order by 나이, 급여 where 근무년수 >= 3 ③ select * from 직원 order by 나이 desc, 급여 asc where 근무년수 >= 3 ④ select * from 직원 where 근무년수 >= 3 order by 나이 desc, 급여 asc
정답
4번
해설
정답: 4. SQL 절의 순서는 SELECT … FROM … WHERE … ORDER BY 이다. WHERE로 근무년수 >= 3을 걸러낸 뒤, ORDER BY 나이 DESC(내림차순), 급여 ASC(오름차순)로 정렬해야 조건에 맞으므로 ④가 옳다.
오답 풀이
- 1번: 나이를 내림차순(DESC)으로 지정하지 않아 나이가 많은 순으로 정렬되지 않으므로 옳지 않다.
- 2번: ORDER BY 뒤에 WHERE가 오면 절의 순서가 잘못되어 오류이므로 옳지 않다.
- 3번: ORDER BY 뒤에 WHERE가 와서 절의 순서가 틀리므로 옳지 않다.
- 4번: WHERE → ORDER BY 순서와 정렬 방향이 모두 올바르므로 옳다.
보충 개념 ORDER BY는 항상 SQL 문의 마지막에 오며, 기본 정렬은 오름차순(ASC)이다. 정렬 기준을 콤마로 여러 개 지정하면 앞쪽 기준이 같을 때 다음 기준으로 정렬한다.