본문 바로가기
SQL

[MySQL][프로그래머스] 상위 값 1개 출력 (가격이 제일 비싼 식품의 정보 출력하기)

by saemsaem 2024. 5. 9.


0. 틀린 이유

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE)
FROM FOOD_PRODUCT

이렇게 코드를 작성하면 ID, NAME, CODE, CATEGORY와 별개로 PRICE만 가장 높은 값을 출력하게 된다. 
즉, price와 id 값이 같은 column이 아닌 것이다. 


1. 고가 순으로 정렬 후 1개만 조회하기

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1

 


2. WITH 사용

: 쿼리 작성 시 하나의 서브쿼리 또는 임시 테이블처럼 활용할 수 있는 기능

  + 코드 가독성을 높여줌
  + SQL의 성능을 개선시킴

WITH A AS (
	SELECT MAX(PRICE) AS MAX_PRICE FROM FOOD_PRODUCT LIMIT 1
)

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE 
FROM FOOD_PRODUCT, A
WHERE PRICE = A.MAX_PRICE;
#WITH 기본구조
WITH 별명 AS (
	SUB_QUERY
)
#MAIN QUERY
SELECT column_name
FROM table_name

 


3. WHERE 절

SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)