코딩 테스트 준비/문제

프로그래머스 - 과일로 만든 아이스크림 고르기 (SELECT, MYSQL)

masxer 2025. 9. 22. 10:56

문제 설명

다음은 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF 테이블과 아이스크림 성분 정보를 담은 ICECREAM_INFO 테이블입니다.
FIRST_HALF의 SHIPMENT_ID, FLAVOR, TOTAL_ORDER는 각각 아이스크림 공장에서 가게까지의 출하 번호, 아이스크림 맛, 상반기 총주문량을 나타냅니다. FIRST_HALF의 기본 키는 FLAVOR입니다.
ICECREAM_INFO의 FLAVOR, INGREDIENT_TYPE은 각각 아이스크림 맛, 아이스크림의 성분 타입을 나타내며, 주 성분이 설탕이면 sugar_based, 과일이면 fruit_based가 입력됩니다. ICECREAM_INFO의 기본 키는 FLAVOR이며, ICECREAM_INFO.FLAVOR는 FIRST_HALF.FLAVOR의 외래 키입니다.

테이블 스키마

FIRST_HALF

NAMETYPENULLABLE
SHIPMENT_ID INT(N) FALSE
FLAVOR VARCHAR(N) FALSE
TOTAL_ORDER INT(N) FALSE

ICECREAM_INFO

NAMETYPENULLABLE
FLAVOR VARCHAR(N) FALSE
INGREDIENT_TYPE VARCHAR(N) FALSE

문제

상반기 아이스크림 총주문량이 3,000보다 높고, 아이스크림의 주 성분이 과일인 아이스크림의 **맛(FLAVOR)**을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성하세요.

예시 데이터

FIRST_HALF

SHIPMENT_IDFLAVORTOTAL_ORDER
101 chocolate 3200
102 vanilla 2800
103 mint_chocolate 1700
104 caramel 2600
105 white_chocolate 3100
106 peach 2450
107 watermelon 2150
108 mango 2900
109 strawberry 3100
110 melon 3150
111 orange 2900
112 pineapple 2900

ICECREAM_INFO

FLAVORINGREDIENT_TYPE
chocolate sugar_based
vanilla sugar_based
mint_chocolate sugar_based
caramel sugar_based
white_chocolate sugar_based
peach fruit_based
watermelon fruit_based
mango fruit_based
strawberry fruit_based
melon fruit_based
orange fruit_based
pineapple fruit_based

설명

총주문량이 3,000을 초과하는 맛은 chocolate, white_chocolate, strawberry, melon입니다.
이 중 주 성분이 과일(fruit_based)인 맛은 strawberry, melon이며, 총주문량 내림차순으로 정렬하면 melon, strawberry 순입니다.

기대 출력

FLAVOR
melon
strawberry

 

문제 접근

이 문제는 설명에 있는대로 그대로 풀면 되는 거라 딱히 뭘 생각할 필요가 없다.

다만 JOIN을 할 때 INNER JOIN을 해야될지 OUTER JOIN을 사용해야 될지는 잘 생각해 봐야한다.

 

SQL문

SELECT FH.FLAVOR
FROM FIRST_HALF AS FH JOIN ICECREAM_INFO AS II ON FH.FLAVOR = II.FLAVOR
WHERE FH.TOTAL_ORDER >= 3000 AND II.INGREDIENT_TYPE = 'fruit_based'
ORDER BY TOTAL_ORDER DESC;

-- 총 주문량이 3,000 보다 높으면 
-- WHERE : FIRST_HALF의 TOTAL_ORDER >= 3000 AND INGREDIENT_TYPE : 'fruit_based'
-- SELECT : FLAVOR
-- ORDER BY : TOTAL_ORDER DESC;