문제 사이트
https://school.programmers.co.kr/learn/courses/30/lessons/133025
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.
FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER 는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다. FIRST_HALF 테이블의 기본 키는 FLAVOR입니다.
ICECREAM_INFO 테이블 구조는 다음과 같으며, FLAVOR, INGREDITENT_TYPE 은 각각 아이스크림 맛, 아이스크림의 성분 타입을 나타냅니다. INGREDIENT_TYPE에는 아이스크림의 주 성분이 설탕이면 sugar_based라고 입력되고, 아이스크림의 주 성분이 과일이면 fruit_based라고 입력됩니다. ICECREAM_INFO의 기본 키는 FLAVOR입니다. ICECREAM_INFO테이블의 FLAVOR는 FIRST_HALF 테이블의 FLAVOR의 외래 키입니다.
풀이 전략
1. 테이블 조인
FROM FIRST_HALF FH
JOIN ICECREAM_INFO II ON FH.FLAVOR = II.FLAVOR
2. 조건 필터링
- 총 주문량이 3,000 초과
FH.TOTAL_ORDER > 3000
- 주 성분이 과일
II.INGREDIENT_TYPE LIKE "fruit%"
3. 정렬 조건
총 주문량이 많은 순서대로 출력해야 하므로 DESC 사용
ORDER BY FH.TOTAL_ORDER DESC
최종 SQL 코드
-- 코드를 입력하세요
SELECT FH.FLAVOR
FROM FIRST_HALF FH
JOIN ICECREAM_INFO II ON FH.FLAVOR = II.FLAVOR
WHERE FH.TOTAL_ORDER > 3000 AND II.INGREDIENT_TYPE LIKE "fruit%"
ORDER BY FH.TOTAL_ORDER DESC
출력 결과

다른 사람 풀이
정확히 'fruit_based'인 경우만 필터링하므로 = 연산자를 사용하는 게 더 적절하다는 걸 깨닫고
LIKE는 와일드카드를 허용하는 연산자라 불필요한 성능 낭비가 생길 수 있다는 것을 알았습니다.
SELECT FH.FLAVOR
FROM FIRST_HALF FH
JOIN ICECREAM_INFO II ON FH.FLAVOR = II.FLAVOR
WHERE FH.TOTAL_ORDER > 3000
AND II.INGREDIENT_TYPE = 'fruit_based'
ORDER BY FH.TOTAL_ORDER DESC;
'프로그램및 언어 > SQL' 카테고리의 다른 글
[SQL 코테] 조건에 맞는 도서 리스트 출력하기 (0) | 2025.03.31 |
---|---|
[SQL 코테] 12세 이하인 여자 환자 목록 출력하기 (0) | 2025.03.30 |
[SQL 코테] 평균 일일 대여 요금 구하기 (0) | 2025.03.27 |
[SQL 코테] 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2025.03.25 |
SQL로 1부터 100까지 합계 구하기 (0) | 2023.08.30 |