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

성배·2025년 2월 13일
0

코딩테스트

목록 보기
46/53

FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.

FISH_NAME_INFO 테이블은 물고기의 이름에 대한 정보를 담고 있습니다. FISH_NAME_INFO 테이블의 구조는 다음과 같으며, FISH_TYPE, FISH_NAME 은 각각 물고기의 종류(숫자), 물고기의 이름(문자) 입니다.

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

생각한 풀이
1. 물고기 종류별로 가장 큰 물고기의 정보를 출력해야 한다
2. 그룹으로 구분해 가장 큰 길이 MAX()를 이용해 길이를 구한다
3. 두 테이블을 FISH_TYPE으로 조인을 하고 WHERE절에 서브쿼리로 길이가 가장 큰 물고기를 찾는다


SELECT I.ID	,N.FISH_NAME,I.LENGTH AS LENGTH
FROM FISH_INFO I JOIN FISH_NAME_INFO N ON I.FISH_TYPE=N.FISH_TYPE
WHERE I.LENGTH= (SELECT MAX(LENGTH)
                 FROM FISH_INFO
                 WHERE FISH_TYPE = I.FISH_TYPE)
ORDER BY I.ID

🐴 풀이
1. FROM절에서 두 테이블을 FISH_TYPE으로 조인한다
2. WHERE절에서 I 테이블의 LENGTH가 서브쿼리의 출력 값인 물고기 종류별 최대 길이 값이랑 같은 값을 찾는다

0개의 댓글