-
Programmers - 가장 큰 물고기 10마리 구하기MySQL_Programmers/Level1 2025. 2. 18. 14:11반응형
문제 설명
낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.Column name Type Nullable ID INTEGER FALSE FISH_TYPE INTEGER FALSE LENGTH FLOAT TRUE TIME DATE FALSE
단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다.
문제
FISH_INFO 테이블에서 가장 큰 물고기 10마리의 ID와 길이를 출력하는 SQL 문을 작성해주세요. 결과는 길이를 기준으로 내림차순 정렬하고, 길이가 같다면 물고기의 ID에 대해 오름차순 정렬해주세요. 단, 가장 큰 물고기 10마리 중 길이가 10cm 이하인 경우는 없습니다.
ID 컬럼명은 ID, 길이 컬럼명은 LENGTH로 해주세요.
예시
예를 들어 FISH_INFO 테이블이 다음과 같다면ID FISH_TYPE LENGTH TIME 0 0 30 2021/12/04 1 0 50 2020/03/07 2 0 40 2020/03/07 3 1 20 2022/03/09 4 1 NULL 2022/04/08 5 2 13 2021/04/28 6 3 60 2021/07/27 7 0 55 2021/01/18 8 2 73 2020/01/28 9 3 73 2021/04/08 10 2 22 2020/06/28 11 2 17 2022/12/23 이 때 가장 큰 물고기 10마리는 물고기의 ID 4, 5를 제외한 나머지 입니다. 결과를 길이 에 대해 내림차순 정렬하고, 길이가 같다면 물고기의 ID에 대해 오름차순 정렬하면 다음과 같습니다
ID LENGTH 8 73 9 73 6 60 7 65 1 50 2 40 0 30 10 22 3 20 11 17
정답
SELECT ID, LENGTH FROM FISH_INFO WHERE LENGTH IS NOT NULL ORDER BY LENGTH DESC, ID ASC LIMIT 10
풀이
1. 우선 필요한 FISH_INFO테이블에서 컬럼명인 ID, LENGTH를 SELECT를 해온다.
SELECT ID, LENGTH FROM FISH_INFO
2. LENGTH의 경우 10CM이하라면 NULL값으로 표기되는데, 가장 큰 물고기 10마리 중 10CM이하인 물고기는 없다고 한다.
SELECT ID, LENGTH FROM FISH_INFO WHERE LENGTH IS NOT NULL
3. LENGTH의 순서대로 내림차순을 하는데, 만약 길이가 동일하면 ID값으로 오름차순을 한다.
SELECT ID, LENGTH FROM FISH_INFO WHERE LENGTH IS NOT NULL ORDER BY LENGTH DESC, ID ASC
4. 가장 큰 물고기 10마리만 조회한다.
SELECT ID, LENGTH FROM FISH_INFO WHERE LENGTH IS NOT NULL ORDER BY LENGTH DESC, ID ASC LIMIT 10
반응형'MySQL_Programmers > Level1' 카테고리의 다른 글
Programmers - 잔챙이 잡은 수 구하기 (0) 2025.02.21 Programmers - 잡은 물고기의 평균 길이 구하기(IS NULL, CASE) (0) 2025.02.19 Programmers - 잡은 물고기 중 가장 큰 물고기의 길이 구하기(SUM, MAX, MIN (0) 2025.02.19 Programmers - 한 해에 잡은 물고기 수 구하기 (0) 2025.02.18 Programmers - 특정 형질을 가지는 대장균 찾기 (0) 2025.02.17