👇 인기있는 아이스크림(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] 순서로 결합 인덱스가 구성되어 있다면 데이터는 정렬이 된 상태로 인덱스가 생성되어 있습니다.
- 인덱스 스캔을 하게 되면 옵티마이저는 별도의 정렬 과정 없이 인덱스 리프 블록을 순차적으로 읽는 것만으로 결과를 반환할 수 있습니다.
'🗄️ DB_이야기 > # ⚡SQL' 카테고리의 다른 글
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 과일로 만든 아이스크림 고르기(SELECT) (0) | 2026.04.13 |
|---|---|
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 12세 이하인 여자 환자 목록 출력하기(SELECT) (1) | 2026.04.13 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 조건에 맞는 도서 리스트 출력하기(SELECT) (0) | 2026.04.10 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 평균 일일 대여 요금 구하기(SELECT) (1) | 2026.04.10 |
| [SQL] SQL 기본 개념 (0) | 2026.04.03 |