You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/* 틀린 풀이 */SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY
ORDER BY PRICE DESC;
위 코드가 정답이 아닌 이유를 모르겠습니다.
The text was updated successfully, but these errors were encountered:
/* 틀린 풀이 */SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY
ORDER BY MAX_PRICE DESC
틀린 이유:
MAX(PRICE)를 바로 SELECT 할 경우 가장 높은 가격을 뽑기만 하고, 같은 행에 있는 값들은 관련이 없는 값이 SELECT 된다.
때문에 가장 큰 값을 식별할 수 있는 값으로 서브 쿼리를 통해 가져오고 그 값과 그 값에 해당하는 행의 CATEGORY, PRODUCT_NAME을 가져오도록 한다.
아래 사진에서 확인할 수 있듯 전혀 다른 PRODUCT_ID를 가지게 된다는게 문제이다.
/* 정답은 맞지만 잘못된 풀이 */SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유') AND
PRICE IN (SELECTMAX(PRICE)
FROM FOOD_PRODUCT
GROUP BY CATEGORY)
ORDER BY MAX_PRICE DESC
잘못된 이유
가장 높은 가격의 PRICE를 식별 값으로 사용했을 때 만약 다른 CATEGORY의 값 중 같은 값이 있다면 문제가 생길 수 있다.
이를 방지하기 위해 서브쿼리에서 CATEGORY를 함께 SELECT 해주었다.
/* 옳은 풀이 */SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유') AND
(CATEGORY, PRICE) IN (SELECT CATEGORY, MAX(PRICE)
FROM FOOD_PRODUCT
GROUP BY CATEGORY)
ORDER BY MAX_PRICE DESC
Issue: ✅ 문제 Question
주차 별 문제 풀이 시에 고민했던 내용을 공유해주세요.
주차
week3
문제 이름 및 링크
식품분류별 가장 비싼 식품의 정보 조회하기
공유 내용
위 코드가 정답이 아닌 이유를 모르겠습니다.
The text was updated successfully, but these errors were encountered: