[프로그래머스 SQL/131115] 가격이 제일 비싼 식품의 정보 출력하기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이 (실패)
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE) AS 'PRICE'
FROM FOOD_PRODUCT
GROUP BY 없이 MAX(PRICE)
를 쓰면 전체 행을 하나로 압축한다.- 이로 인해 다른 컬럼들과
MAX(PRICE)
가 정확하게 매칭되지 않는다.MAX(PRICE)
는 테이블에서 가장 비싼 가격을 반환한다.- 하지만 나머지 컬럼들은 여러 개의 행이 존재한다.
- 즉, 반환되는
PRODUCT_ID
,PRODUCT_NAME
,PRODUCT_CD
,CATEGORY
는 무작위 하나를 반환하거나, 오류가 발생할 수 있다.
두 번째 풀이 (성공)
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
- 서브쿼리를 이용해서 가장 높은 가격을 가진 상품 정보를 조회한다.
SELECT MAX(PRICE) FROM FOOD_PRODUCT
로 테이블에서 가장 비싼 가격을 반환한다.WHERE PRICE = 가장 비싼 가격
으로 각 행의 가격과 비교 가능하다.