상세 컨텐츠

본문 제목

프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기(MySQL)

programmers/sql

by nownow 2024. 2. 13. 01:35

본문

MySQL 풀이.

 

제출한 코드

SELECT
CATEGORY,
PRICE AS MAX_PRICE,
PRODUCT_NAME
FROM
FOOD_PRODUCT
WHERE
(CATEGORY,PRICE) IN
(
    SELECT
    CATEGORY,
    MAX(PRICE)
    FROM
    FOOD_PRODUCT
    WHERE
    CATEGORY IN ("과자","국","김치","식용유")
    GROUP BY 
    CATEGORY
)
ORDER BY 2 DESC

1. 카테고리별로 가장 비싼 식품의 가격을 찾는다. (서브쿼리 속 내용) 문제의 조건도 여기서 미리 맞춰준다.

2. 테이블에서 카테고리와 가격이 해당 서브쿼리에서 찾아낸 정보와 같은 것들만 추려서 출력한다.

 

※ (A,B) IN (A,B) 형식으로 사용하면 여러 컬럼을 비교할 수 있다. 위 예시에선 서브쿼리에서 두개의 컬럼을 select 했음.

 

인상깊은 풀이 방식

SELECT
CATEGORY,
MAX(PRICE) AS MAX_PRICE,
SUBSTRING_INDEX(GROUP_CONCAT(PRODUCT_NAME ORDER BY PRICE DESC),",",1)
FROM
FOOD_PRODUCT
WHERE 
CATEGORY IN("과자","국","김치","식용유")
GROUP BY
CATEGORY
ORDER BY
PRICE DESC

GROUP_CONCAT 함수를 활용해서 카테고리 별 상품 이름을 그 가격별로 내림차순 정렬한다.

상품1,상품2 ... 형식으로 되어있기에 맨 앞 상품 1을 선택하면 정렬 기준에 따라 가장 비싼 항목이므로

SUBSTRING_INDEX 함수로 꺼내와서 출력한다.

 

 

관련글 더보기