📌 문제 정보
- 문제 이름 : 프로그래머스 - (GROUP BY) 성분으로 구분한 아이스크림 총 주문량
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/133026
📌 문제 요약
- FIRST_HALF 테이블 : SHIPMENT_ID, TOTAL_ORDER, FLAVOR(기본 키)
- ICECREAM_INFO 테이블 : INGREDIENT_TYPE(sugar_based, fruit_based), FLAVOR(FIRST_HALF 테이블의 FLAVOR 외래키)
- 상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요.
예시)
FIRST_HALF 테이블
| SHIPMENT_ID | FLAVOR | TOTAL_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 테이블
| FLAVOR | INGREDIENT_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,200 + 2,800 + 1,700 + 2,600 + 3,100 = 13,400입니다. 아이스크림의 주 성분이 과일인 아이스크림들에 대한 총주문량을 구하면 3,100 + 2,450 + 2,150 + 2,900 + 3,150 + 2,900 + 2,900 = 19,550입니다. 따라서 총주문량이 작은 순서대로 조회하는 SQL 문을 실행하면 다음과 같이 나와야 함.
출력)
| INGREDIENT_TYPE | TOTAL_ORDER |
| sugar_based | 13400 |
| fruit_based | 19550 |
📌 내 풀이 및 코드
SELECT ICECREA_INFO.INGREDIENT_TYPE, SUM(FIRST_HALF.TOTAL_ORDER) AS TOTAL_ORDER
FROM ICECREAM_INFO
JOIN FIRST_HALF ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR
GROUP BY ICECREAM_INFO.INGREDIENT_TYPE
ORDER BY FIRST_HALF.TOTAL_ORDER ASC;
- FROM, JOIN에 어떤 테이블을 써야하는지 자꾸 헷갈림.
- “아이스크림 성분별로 주문량을 보고 싶다!” 가 문제의 목표였기 때문
| 기준 테이블 (FROM) | ICECREAM_INFO | 우리는 **"성분별로 집계"**하고 싶기 때문에 이 테이블이 기준 |
| 붙는 테이블 (JOIN) | FIRST_HALF | FLAVOR별 주문량은 부가 정보, 붙여서 활용하는 데이터 |
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
| 작은 순서대로 | 오름차순 | ORDER BY ... ASC |
| 큰 순서대로 | 내림차순 | ORDER BY ... DESC |
'CODING TEST > MySQL' 카테고리의 다른 글
| Lv2- 연도 별 평균 미세먼지 농도 조회하기 (0) | 2025.07.29 |
|---|---|
| Lv2 - 상품 별 오프라인 매출 구하기 (0) | 2025.07.29 |
| Lv2 - 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2025.07.29 |
| Lv2 - 입양 시각 구하기(1) (0) | 2025.07.21 |
| Lv2 - 중성화 여부 파악하기 (0) | 2025.07.21 |
