Algorithm/Programmers SQL

[MySQL] 프로그래머스 가장 큰 물고기 10마리 구하기

제우제우 2024. 8. 27. 12:28

https://school.programmers.co.kr/learn/courses/30/lessons/298517

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코딩테스트 연습 > SELECT > 가장 큰 물고기 10마리 구하기 

 

문제 분석 

문제 난이도: Level1 

 

MySQL에서의 OrderBy Null 값은 알 수 없는 값으로 처리하여 다음과 같은 기준으로 위치한다.

 

오름차순 (ASC) 정렬: NULL 값이 가장 작은 값으로 간주되어 가장 처음에 위치

내림차순 (DESC) 정렬: NULL 값이 가장 큰 값으로 간주되어 가장 마지막에 위치

SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH ASC

SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC

 

문제 요구 

길이를 기준으로 내림차순 정렬하고, 길이가 같다면 물고기의 ID에 대해 오름차순 정렬

단, 가장 큰 물고기 10마리 중 길이가 10cm 이하인 경우는 없다. 

잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 

 

 

WHERE 조건 필요 없이 단순하게 정렬만하면 된다. 

길이를 기준으로 내림차순 정렬하면 길이가 10cm 미만인 물고기들은 NULL 값으로 SELECT 결과에 가장 아래에 위치하게 된다. 길이를 기준으로 내림차순 정렬은 ORDER BY LENGTH DESC 

만약 길이가 같다면 ID에 대해 오름차순 정렬이니까 ORDER BY LENGTH DESC , ID 이렇게 하면 끝이다.

ASC(오름차순)은 Default 여서 생략이 가능하다.

 

정답 코드

SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC , ID
LIMIT 10