관리 메뉴

오늘도 배운다

식품분류별 가장 비싼 식품의 정보 조회하기 / 프로그래머스, SQL, MySQL 코딩테스트 연습GROUP BY 본문

코딩테스트연습(SQL)

식품분류별 가장 비싼 식품의 정보 조회하기 / 프로그래머스, SQL, MySQL 코딩테스트 연습GROUP BY

LearnerToRunner 2022. 11. 28. 19:56

문제

FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.

 

제출답안

SELECT fp.category, max_price, product_name
FROM(
    food_product AS fp 
    RIGHT JOIN (
        SELECT category, MAX(price) AS max_price 
        FROM food_product
        WHERE category IN ('과자', '국', '김치', '식용유')
        GROUP BY category) AS pm
    ON (pm.category = fp.category AND pm.max_price = fp.price)
)
ORDER BY 2 DESC

 

 

 

풀이

더보기

과자, 국, 김치, 식용유의 max_price 테이블 구하기

SELECT category, MAX(price) AS max_price 
        FROM food_product
        WHERE category IN ('과자', '국', '김치', '식용유')
        GROUP BY category

>> 효율적인 조인을 위해서 필요한 정보를 먼저 추려낸 다음 조인하기

 

네 카테고리의 max_price 테이블과 일반 테이블 조인

 

food_product AS fp 
    RIGHT JOIN (
        SELECT category, MAX(price) AS max_price 
        FROM food_product
        WHERE category IN ('과자', '국', '김치', '식용유')
        GROUP BY category) AS pm
    ON (pm.category = fp.category AND pm.max_price = fp.price)
)

>> max_price 테이블의 카테고리 이름, max_price와 일치하는 것만 조인

 

 

문제 바로가기(MySQL)  

 

728x90
Comments