본문 바로가기

반응형

문제

상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요.

구조

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

예시


완성한 쿼리

-- 코드를 입력하세요
select
    ii.ingredient_type,
    sum(fh.total_order) total_order
from first_half fh join icecream_info ii on fh.flavor = ii.flavor
group by ii.ingredient_type
order by sum(fh.total_order)

외래키는 Flavor 이기 때문에 각 Flavor로 조인을 시도합니다. 그리고 재료 타입은 ICECREAM_INFO 에, 총 주문량은 FIRST_HALF에 있는 컬럼이기 때문에 각각의 Alias를 부여해주며 Select 해줍니다. 이 때, 총 주문량은 모두 합쳐야 하기 때문에 Sum()을 해주고, 재료 타입을 기준으로 Group By 해줍니다. 마지막으로 총 주문량을 기준으로 정렬하면 문제에서 요구하는 결과물이 나오게 됩니다!

난이도가 1에서 2로 올라서 그런지 1에서 풀 때보단 생각을 더 깊이 해야 하네요! 재밌습니다 ㅎㅎ

 

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/133026

반응형
댓글