🔗 1. 문제 URL
프로그래머스 문제 바로가기 👉
https://school.programmers.co.kr/learn/courses/30/lessons/133026
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📝 2. 문제 요구사항 정리
이 문제는 FIRST_HALF 테이블과 ICECREAM_INFO 테이블을 이용해
각 아이스크림 성분 타입(INGREDIENT_TYPE) 별로
상반기 동안의 총 주문량(TOTAL_ORDER) 을 구하는 문제입니다.
핵심은 두 테이블을 FLAVOR 컬럼으로 JOIN 한 뒤,
성분 타입별 주문량 합계를 구하고
그 결과를 총주문량이 작은 순서(ASC) 로 정렬하는 것입니다.
✔ 요구사항 요약
- FIRST_HALF 테이블과 ICECREAM_INFO 테이블 JOIN (FLAVOR 기준)
- 각 INGREDIENT_TYPE 별 총 주문량(TOTAL_ORDER) 합계 계산 (SUM)
- 결과 컬럼명: TOTAL_ORDER
- 총주문량이 작은 순서(ASC) 로 정렬
- 출력 컬럼: INGREDIENT_TYPE, TOTAL_ORDER
✅ 3. 정답 SQL 코드
SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF F JOIN ICECREAM_INFO I
USING(FLAVOR)
GROUP BY I.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC;
-- 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF 테이블
-- 아이스크림 성분에 대한 정보를 담은 ICECREAM_INFO 테이블
-- ICECREAM_INFO의 FLAVOR는 FIRST_HALF 테이블의 FLAVOR의 외래 키
💬 4. 풀이하면서 느낀 점
이 문제는 JOIN과 GROUP BY의 기본 개념만 알고 있다면 어렵지 않게 해결할 수 있는 유형이였습니다.
첫 번째로 해야 할 일은 각 FLAVOR의 성분 타입(INGREDIENT_TYPE)을 알기 위해 두 테이블을 조인하는 것,
두 번째로는 성분 타입별 총 주문량을 집계하는 것입니다.
문제를 읽으며 다음 흐름이 자연스럽게 떠올랐습니다.
- "각 성분 타입별 총 주문량" → GROUP BY + SUM
- "FLAVOR 기준으로 두 테이블 연결" → JOIN USING(FLAVOR)
- "총주문량이 작은 순서대로" → ORDER BY ASC
이런 구조적인 사고를 그대로 SQL 문으로 옮기면 비교적 쉽게 정답을 만들 수 있었고,
특히 이 문제는 집계 후 정렬하는 가장 기본적인 패턴을 복습하는데 도움이 됐습니다.
또한 USING(FLAVOR) 구문을 사용하면
ON F.FLAVOR = I.FLAVOR 보다 더 깔끔하게 조인할 수 있다는 점도
문제 풀이 과정에서 다시 떠올릴 수 있었습니다.
전체적으로 복잡한 연산 없이
JOIN → GROUP BY → SUM → ORDER BY
라는 기본적인 SQL 처리 흐름을 이해하는 데 좋은 연습이 된 문제였습니다.
궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.
도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊
'코딩테스트 > MYSQL' 카테고리의 다른 글
| [프로그래머스 LV.2] 분기별 분화된 대장균의 개체 수 구하기 — MySQL 정답 & 해설 (0) | 2025.12.03 |
|---|---|
| [프로그래머스 LV.2] 재구매가 일어난 상품과 회원 리스트 구하기 — MySQL 정답 & 해설 (0) | 2025.12.03 |
| [프로그래머스 LV.2] 조건에 맞는 도서와 저자 리스트 출력하기 — MySQL 정답 & 해설 (3) | 2025.11.29 |
| [프로그래머스 LV.2] 조건에 맞는 사원 정보 조회하기 — MySQL 정답 & 해설 (0) | 2025.11.29 |
| [프로그래머스 LV.2] ROOT 아이템 구하기 — MySQL 정답 & 해설 (0) | 2025.11.27 |