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

🚀[SQL 알고리즘 문제 풀이] Programmers : 인기있는 아이스크림(SELECT)

by gwon_s 2026. 4. 10.

👇 인기있는 아이스크림(SELECT)

 

프로그래머스

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

programmers.co.kr

 

 

🔓 문제 설명

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

 

예시 문제 데이터 (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

⚡SQL Query

SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC,
    TOTAL_ORDER ASC;

🔎 풀이 설명

1. 다중 정렬: ORDER BY 절에 여러 컬럼을 콤마(,)로 구분하여 작성하면 첫 번째 기준이 동일할 때 두 번째 기준으로 정렬을 수행합니다.

 


💡인사이트

1. Sort Order By 연산 부하

  • ORDER BY 컬럼이 많고 데이터량이 방대할 경우, PGA 내의 Sort Area를 사용하게 되는데 이 공간이 부족하면 Temp Tablespace를 사용하게 되어 성능이 급격히 저하됩니다.

 

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

  • [TOTAL_ORDER DESC, SHIPMENT_ID ASC] 순서로 결합 인덱스가 구성되어 있다면 데이터는 정렬이 된 상태로 인덱스가 생성되어 있습니다.
  • 인덱스 스캔을 하게 되면 옵티마이저는 별도의 정렬 과정 없이 인덱스 리프 블록을 순차적으로 읽는 것만으로 결과를 반환할 수 있습니다.