프로그래머스 SQL 고득점 Kit의 SELECT 카테고리 문제인
과일로 만든 아이스크림 고르기 문제를 함께 풀어봅니다. 🍓
이 문제는 JOIN과 조건 필터링을 활용한 기초적인 SELECT 실력을 확인할 수 있어요.
면접 준비나 SQL 코딩테스트를 준비하시는 분들께 꼭 추천드립니다!
📝과일로 만든 아이스크림 고르기
상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해 주세요.
📝 문제 설명
다음은 아이스크림 가게의 상반기 주문 정보와 성분 정보를 담고 있는 두 개의 테이블이 있습니다:
- FIRST_HALF: 아이스크림 맛과 상반기 총주문량을 담고 있는 테이블
- ICECREAM_INFO: 각 아이스크림 맛의 주요 성분을 담고 있는 테이블
목표는 상반기 아이스크림 총주문량이 3,000보다 많은 아이스크림 중, 주 성분이 과일(fruit_based)인 아이스크림의 맛을 총 주문량 기준으로 내림차순 정렬하여 조회하는 것입니다.
📊 테이블 구조
FIRST_HALF 테이블
컬럼명 | 타입 | 설명 |
SHIPMENT_ID | INT | 출하 번호 (Primary Key 아님) |
FLAVOR | VARCHAR | 아이스크림 맛 (Primary Key) |
TOTAL_ORDER | INT | 상반기 총 주문량 |
ICECREAM_INFO 테이블
컬럼명 | 타입 | 설명 |
FLAVOR | VARCHAR | 아이스크림 맛 (Primary Key) |
INGREDIENT_TYPE | VARCHAR | 아이스크림의 주 성분 (fruit_based or sugar_based) |
💡 SQL 문제 해결 방법
- 테이블 조인: FIRST_HALF와 ICECREAM_INFO 테이블은 FLAVOR를 기준으로 조인
- 조건 필터링:
- TOTAL_ORDER >= 3000
- INGREDIENT_TYPE = 'fruit_based'
- 정렬: 주문량이 많은 순서로 정렬 (ORDER BY TOTAL_ORDER DESC)
- 조회 컬럼: 조건을 만족하는 FLAVOR만 조회
728x90
🖥️ SQL 풀이
SELECT A.FLAVOR
FROM FIRST_HALF A
LEFT JOIN ICECREAM_INFO B
ON A.FLAVOR = B.FLAVOR
WHERE A.TOTAL_ORDER >= 3000
AND B.INGREDIENT_TYPE = 'fruit_based'
ORDER BY TOTAL_ORDER DESC;
🔍 쿼리 분석
구문 | 설명 |
LEFT JOIN | FLAVOR 컬럼을 기준으로 두 테이블을 연결합니다. 내부적으로는 INNER JOIN과 동일하게 동작하게 됩니다 (WHERE에서 B조건 필터링이 있기 때문). |
A.TOTAL_ORDER >= 3000 | 주문량이 3000 이상인 데이터만 필터링합니다. |
B.INGREDIENT_TYPE = 'fruit_based' | 과일 성분이 주성분인 아이스크림만 필터링합니다. |
ORDER BY TOTAL_ORDER DESC | 주문량이 높은 순서대로 정렬하여 결과를 반환합니다. |
SELECT A.FLAVOR | 조건을 만족하는 아이스크림 맛만 출력합니다. |
🎯 결론
이 문제는 SQL의 기본기인 JOIN, 조건 필터링, 정렬을 모두 활용하는 전형적인 입문 문제입니다. 실무에서 고객 조건 필터링, 제품 조회 등에 자주 쓰이는 패턴이므로 꼭 익혀두세요!
이 문제를 풀면서 이런 점들을 배울 수 있어요:
- 기본적인 JOIN 구문 익히기
- WHERE절에서 여러 조건을 함께 처리하는 방법
- 특정 조건에 맞는 데이터 정렬 및 필터링
📚문제 풀러가기
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
728x90
반응형
'프로그래머스 SQL 고득점 Kit' 카테고리의 다른 글
프로그래머스 SQL 고득점 Kit | 평균 일일 대여 요금 구하기 (SELECT) (0) | 2025.04.28 |
---|