Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
more
Archives
Today
Total
관리 메뉴

하루에 하나씩 공부하기

물고기 종류 별 대어찾기-LV3 본문

SQL 코딩테스트/LV3

물고기 종류 별 대어찾기-LV3

dltaexox 2025. 1. 8. 18:17

- 문제

물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요.

물고기의 ID 컬럼명은 ID, 이름 컬럼명은 FISH_NAME, 길이 컬럼명은 LENGTH로 해주세요.
결과는 물고기의 ID에 대해 오름차순 정렬해주세요.
단, 물고기 종류별 가장 큰 물고기는 1마리만 있으며 10cm 이하의 물고기가 가장 큰 경우는 없습니다.

 

코딩테스트 연습 - 물고기 종류 별 대어 찾기 | 프로그래머스 스쿨

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

- 키포인트

WHERE 절 안에 서브쿼리 사용

WITH 절 사용

RANK() 순위함수 사용 > PARTITION BY로 종류별로, ORDER BY로 정렬순서 

변수명에 RANK 이런 함수명 쓰지말자

 

- 코드

SELECT I.ID, N.FISH_NAME, I.LENGTH 
FROM FISH_INFO I INNER JOIN FISH_NAME_INFO N ON I.FISH_TYPE=N.FISH_TYPE
WHERE I.LENGTH=(
SELECT MAX(LENGTH)  
FROM FISH_INFO
WHERE TYPE=I.FISH_TYPE
)
ORDER BY I.ID ASC;
WITH RANKED_FISH AS (
    SELECT I.ID, N.FISH_NAME, I.LENGTH, I.FISH_TYPE,
           RANK() OVER (PARTITION BY I.FISH_TYPE ORDER BY I.LENGTH DESC) AS RANK_VALUE
    FROM FISH_INFO I
    INNER JOIN FISH_NAME_INFO N
    ON I.FISH_TYPE = N.FISH_TYPE
)
SELECT ID, FISH_NAME, LENGTH
FROM RANKED_FISH
WHERE RANK_VALUE = 1
ORDER BY ID ASC;