문제
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
sql코드
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
다른 코드
다른 해석들도 찾아봤는데, 가격이 제일 비싼 식품 한개를 뽑는 것이므로 limit를 걸어서도 가능하다
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC LIMIT 1;
그러나~
속도면에서 보면 MAX는 O(n) 이고 ORDER BY는 정렬이니 O(nlogn)이라 평균적으로 MAX가 더 빠르다
그리고
만약 max 값이 같은 제품이 여러개인 경우 max()는 해당하는 모든 제품들을 다 보여주는데 limit을 이용하면 가장 큰 하나 밖에 안보여준다
여러 방면에서 생각할 수 있겠다. 다른 분들의 해설이 도움이 됐다.
정말 좋은 글 감사합니다!