프로그래머스 SQL 고득점 Kit
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
집계함수의 사용에 대해 다시 생각해보는 계기가 됨.
# 틀린 코드
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE)
FROM FOOD_PRODUCT
💡
집계함수는 여러 행에서 계산을 수행하고 단일 값을 반환.
해당 쿼리는 MAX(PRICE)는 집계함수를 사용함으로써 가장 높은 가격이 나오지만 나머지 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY는 MAX(PRICE)를 PRICE로 가지는 ROW 정보들이 아닐 수 있음.
ORDER BY를 활용하여 풀 수도 있다.
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1