문제
다음 중 <상품>(상품명, 분류, 재고, 가격) 테이블에서 재고가 50 이상인 상품을 가격이 높은 순서로, 가격이 같으면 상품명 오름차순으로 모든 필드를 조회하는 SQL문으로 옳은 것은?
① SELECT * FROM 상품 ORDER BY 가격 DESC, 상품명 ASC WHERE 재고 >= 50; ② SELECT * FROM 상품 WHERE 재고 >= 50 ORDER BY 가격, 상품명 DESC; ③ SELECT * FROM 상품 WHERE 재고 >= 50 ORDER BY 가격 DESC, 상품명 ASC; ④ SELECT * FROM 상품 WHERE 재고 >= 50 ORDER BY 가격 ASC, 상품명 DESC;
정답
3번
해설
정답: 3. WHERE 절로 재고 50 이상을 거른 뒤, 가격 내림차순(DESC), 가격이 같으면 상품명 오름차순(ASC)으로 정렬하므로 3번이 옳다.
오답 풀이
- 1번: ORDER BY가 WHERE보다 앞에 와서 SQL 문법에 어긋나므로 옳지 않다.
- 2번: 가격이 기본값(오름차순)으로 정렬되어 "가격이 높은 순서"가 아니므로 옳지 않다.
- 3번: WHERE → ORDER BY 가격 DESC, 상품명 ASC로 조건에 맞으므로 옳다.
- 4번: 가격 오름차순·상품명 내림차순이라 요구와 반대이므로 옳지 않다.
보충 개념 SQL 절의 순서는 SELECT → FROM → WHERE → ORDER BY이며, 정렬은 ASC(오름차순, 기본)·DESC(내림차순)로 지정한다.