[SQL] 가장 큰 물고기 10마리 구하기

하나·2024년 12월 30일
1

SQL TEST

목록 보기
2/9
post-thumbnail

🪄문제 분석 요약

FISH_INFO 테이블에서 가장 큰 물고리 10마리의 ID와 길이 출력.

  • 결과는 길이 기준 내림차순, 길이가 같다면 물고기 ID에 대해 오름차순.
  • 단, 가장 큰 물고기 10마리 중 10cm이하인 경우는 없다. -> 10cm이하일 경우 LENGTH=NULL

🪄접근법

LENGTH를 기준으로 내림차순 정렬 후 10개를 뽑았을 때 10cm 이하인 경우는 포함되지 않으나 문제 조건에 포함되어 있으므로 추가 조건을 주었다.

  • 10cm 이하인 경우 LENGTH=NULL이므로 WHERE을 사용하여 IS NOT NULL 조건을 주었다.

다중정렬을 사용하여 우선 LENGTH 기준으로 내림차순 정렬 후 ID기준으로 오름차순 정렬하도록 하였다.
그 후 마지막으로 10개만 뽑도록 LIMIT를 주었다.

🪄SQL

SELECT ID, LENGTH
FROM FISH_INFO
WHERE LENGTH IS NOT NULL
ORDER BY LENGTH DESC, ID ASC
LIMIT 10;

🪄틀린 부분 수정 OR 다른 풀이

  • WHERE조건에서 준 NOT NULL 조건의 경우 정렬 후 10개의 데이터만 뽑아보았을 때 LENGTH=NULL인 데이터가 없어 구지 WHERE 조건을 주지 않아도 정답 처리가 되지만, 문제에 더 부합한 풀이를 위해 WHERE 조건으로 NULL을 제외하여 데이터를 추출하도록 하였다.
  • ASC의 경우 정렬의 기본값(오름차순)이기에 ASC로 명시하여 작성하지 않아도 자동으로 오름차순 정렬되지만 가시성을 위해 ASC를 적어주었다!
SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC, ID
LIMIT 10;

🪄관련 개념

다중정렬 ORDER BY

  • 결과 집합을 여러 열 기준으로 정렬하기 위해서는 ORDER BY 절에 ,(쉼표)로 구분하여 정렬 조건을 부여할 수 있다.
  • ORDER BY에서 다중정렬을 하는 경우 왼쪽부터 순차적으로 정렬되기에 순서를 고려하여 컬럼을 나열해야 한다!
SELECT * FROM 테이블 ORDER BY COL1 DESC, COL2 DESC;

💡 COL1기준으로 내림차순 정렬 후, COL1이 같은 값에 한해서 COL2로 내림차순 하겠다!

profile
Start with hello world:)

0개의 댓글

관련 채용 정보