Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- LIMIT
- IS NOT NULL
- 트래블테크
- 서브쿼리
- 금융 플랫폼
- programmers
- Round
- 투자자산운용사
- IN
- order by
- alias
- count
- 금융IT
- 도서추천
- date_format
- MAX
- join
- 해외결제
- MySQL
- SQL
- where
- IELTS
- Python
- is null
- GROUP BY
- SubQuery
- 날짜 포맷
- ifnull
- having
- inner join
Archives
- Today
- Total
Every Step Matters
[프로그래머스 SQL Lv.1] 가장 큰 물고기 10마리 구하기 (MySQL) 본문
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/298517
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. 테이블 : FISH_INFO
| Column name | Type | Nullable |
| ID | INTEGER | FALSE |
| FISH_TYPE | INTEGER | FALSE |
| LENGTH | FLOAT | TRUE |
| TIME | DATE | FALSE |
잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH가 NULL 이며, LENGTH에 NULL 만 있는 경우는 없다.
2. 문제
FISH_INFO 테이블에서 (1) 가장 큰 물고기 10마리의 (2) ID와 길이를 출력하는 SQL 문을 작성해주세요. 결과는 (3) 길이를 기준으로 내림차순 정렬하고, (4) 길이가 같다면 물고기의 ID에 대해 오름차순 정렬해주세요. 단, 가장 큰 물고기 10마리 중 길이가 10cm 이하인 경우는 없습니다. (5) ID 컬럼명은 ID, 길이 컬럼명은 LENGTH로 해주세요.
3. 문제풀이
일단 '가장 큰 물고기 10마리 중 길이가 10cm 이하인 경우는 없다'고 명시해둔 이유는, 가장 큰 물고기 10마리의 length가 null값이 아니라는 말을 뜻한다. 이 말을 명심하면서 문제를 풀어보자.
가장 큰 물고기 10마리를 구하기 위해서는, 길이 기준 내림차순 정렬이 필요하다. 이때 든 의문은, "null값이 있는 컬럼의 정렬은 어떻게 되는가?"였다.
NULL값이 있는 컬럼을 오름차순 정렬하면 NULL값이 가장 먼저 출력되고, 내림차순 정렬하면 NULL값이 가장 마지막에 출력된다.
*만약 오름차순 정렬을 유지하면서 NULL값을 뒤로 보내고 싶다면? : [링크] 참고
이 문제에서는 길이 기준 내림차순 정렬이므로, 정렬을 하면 NULL값이 자동으로 맨 마지막으로 보내진다. 따라서 그냥 평소 하는 대로 ORDER BY를 이용하면 되고, 이후에 LIMIT로 가장 위의 10개만 출력하면 된다.
4. 정답
따라서 정답은
SELECT id, length
FROM fish_info
ORDER BY length DESC, id -- length기준 내림차순 정렬, id기준 오름차순 정렬
LIMIT 10 -- 가장 위의 10개만 출력
Reference
'Database > SQL' 카테고리의 다른 글
| [프로그래머스 SQL Lv.1] 과일로 만든 아이스크림 고르기 (MySQL) (0) | 2025.11.27 |
|---|---|
| [프로그래머스 SQL Lv.1] 특정 형질을 가지는 대장균 찾기 (MySQL) (0) | 2025.11.27 |
| [프로그래머스 SQL Lv.1] 가장 비싼 상품 구하기 (MySQL) (0) | 2025.11.27 |
| [프로그래머스 SQL Lv.1] 잔챙이 잡은 수 구하기 (MySQL) (0) | 2025.11.27 |
| [프로그래머스 SQL Lv.1] 강원도에 위치한 생산공장 목록 출력하기 (MySQL) (0) | 2025.11.26 |