문제
다음 중 [상품] 테이블에서 '재고량'이 50 이상인 상품을 '단가'가 높은 순서대로 조회하되, 단가가 같으면 '상품명'의 오름차순으로 모든 필드를 표시하는 SQL문으로 옳은 것은?
① SELECT * FROM 상품 ORDER BY 단가 DESC, 상품명 ASC WHERE 재고량 >= 50 ② SELECT * FROM 상품 WHERE 재고량 >= 50 ORDER BY 단가 ASC, 상품명 DESC ③ SELECT * FROM 상품 WHERE 재고량 >= 50 ORDER BY 상품명 ASC, 단가 DESC ④ SELECT * FROM 상품 WHERE 재고량 >= 50 ORDER BY 단가 DESC, 상품명 ASC
정답
4번
해설
정답: 4. 조건은 WHERE 재고량>=50으로 지정하고, 정렬은 단가 내림차순(DESC)을 1순위, 같은 단가일 때 상품명 오름차순(ASC)을 2순위로 둔 4번이 옳다.
오답 풀이
- 1번: WHERE 절이 ORDER BY 뒤에 와서 SQL 절 순서가 잘못되었다.
- 2번: 단가를 오름차순(ASC), 상품명을 내림차순(DESC)으로 지정해 요구와 반대이다.
- 3번: 정렬 우선순위가 상품명·단가 순으로 바뀌어 요구와 맞지 않는다.
- 4번: 단가 DESC, 상품명 ASC 순으로 올바르게 정렬하므로 옳다.
보충 개념 SQL 절 순서는 SELECT→FROM→WHERE→ORDER BY이며, ORDER BY에 여러 기준을 쉼표로 나열하면 앞쪽이 우선 정렬된다.