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 함수로 꺼내와서 출력한다.
프로그래머스 상품을 구매한 회원 비율 구하기 (MYSQL) (0) | 2024.02.14 |
---|---|
프로그래머스 자동차 대여금액 문제들 (Mysql) (0) | 2024.02.14 |
프로그래머스 입양 시각 구하기(2) (MYSQL) (0) | 2024.02.13 |
프로그래머스 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (Mysql) (0) | 2024.02.13 |