본문 바로가기
🗄️ DB_이야기/# ⚡SQL

🚀[SQL 알고리즘 문제 풀이] Programmers : 과일로 만든 아이스크림 고르기(SELECT)

by gwon_s 2026. 4. 13.

👇 과일로 만든 아이스크림 고르기

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

🔓 문제 설명

상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요.

 

예시 문제 데이터

 

[FIRST_HALF (주문 정보)]

SHIPMENT_ID FLAVOR TOTAL_ORDER
105 white_chocolate 3100
109 strawberry 3100
110 melon 3150

 

[ICECREAM_INFO (성분 정보)]

FLAVOR INGREDIENT_TYPE
white_chocolate sugar_based
strawberry fruit_based
melon fruit_based

⚡SQL Query

SELECT F.FLAVOR
FROM FIRST_HALF F
JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR
WHERE F.TOTAL_ORDER > 3000
  AND I.INGREDIENT_TYPE = 'fruit_based'
ORDER BY F.TOTAL_ORDER DESC;

🔎 풀이 설명

1. 테이블 조인 : 공통 컬럼인 FLAVOR를 기준으로 두 개의 테이블을 결합했습니다.

2. 복합 조건 필터링

3. 내림차순

 


💡인사이트

1. NL Join vs Hash Join

  • 데이터량이 적을 때는  NL Join이 효율적입니다.
  • 만약 두 테이블이 매우 크다면 옵티마이저는 해시 테이블을 생성하는 Hash Join을 선택할 가능성이 높습니다.

 

2. 인덱스 설계를 통한 정렬 제거

  • 성능을 극대화하려면 FIRST_HALF 테이블에 [TOTAL_ORDER + FLAVOR] 결합 인덱스를 구성하여 3,000 이상인 데이터를 먼저 거르고 조인에 참여시키는 전략을 쓸 수 있습니다.