[Programmers] 물고기 종류 별 대어 찾기

HAHAHELLO·2025년 3월 10일

SQL

목록 보기
8/17

Lv.3 물고기 종류 별 대어 찾기

문제

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

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

예제

나의 풀이

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.FISH_TYPE, I.LENGTH) IN (SELECT 
                              		FISH_TYPE, MAX(LENGTH) 
                              	FROM 
                              		FISH_INFO
                              	GROUP BY
                              		FISH_TYPE)
ORDER BY 
	I.ID ASC;

다른 풀이

RANK()를 사용하여 푸는 방법이다.

SELECT 
	ID, FISH_NAME, LENGTH
FROM
	(SELECT
    	I.ID,
    	I.FISH_TYPE,
     	I.LENGTH,
    	N.FISH_NAME,
    	RANK() OVER (PARTITION BY I.FISH_TYPE ORDER BY I.LENGTH DESC) AS L
    FROM
     	FISH_INFO I
    INNER JOIN FISH_NAME_INFO N ON I.FISH_TYPE = N.FISH_TYPE) MAXLENGTH
WHERE 
	L = 1
ORDER BY 
	ID;
profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글