[프로그래머스 SQL/131115] 가격이 제일 비싼 식품의 정보 출력하기

☑️ 문제

프로그래머스 131115

☑️ 풀이

첫 번째 풀이 (실패)

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 = 가장 비싼 가격 으로 각 행의 가격과 비교 가능하다.

© 2021. All rights reserved.

yaejinkong의 블로그