본문 바로가기
Algorithm/SQL

[SQL] 프로그래머스 - 물고기 종류 별 대어 찾기

by 호찌민 2024. 7. 13.

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

 

 

1. Problem

물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요. 결과는 물고기의 ID에 대해 오름차순 정렬해주세요.

2. Analysis

1. 물고기 종류 별로 가장 큰 물고기를 구하기

SELECT
     FISH_TYPE
    ,MAX(LENGTH) AS LENGTH_MAX
FROM FISH_INFO
GROUP BY 
     FISH_TYPE

2. 1번에서 구한 테이블과 FISH_INFO 테이블의 FISH_TYPE과 LENGTH의 값이 일치하는 조건을 주어 종류 별로 가장 큰 물고기 ID를 구할 수 있다.

 

WHERE (F.FISH_TYPE, F.LENGTH) IN
(
SELECT
     FISH_TYPE
    ,MAX(LENGTH) AS LENGTH_MAX
FROM FISH_INFO
GROUP BY 
     FISH_TYPE
)

3. 물고기 이름을 구하기 위해 FISH_NAME_INFO 테이블 조인

INNER JOIN FISH_NAME_INFO N
ON F.FISH_TYPE = N.FISH_TYPE

3. Solution

-- 코드를 작성해주세요
SELECT 
     F.ID
    ,N.FISH_NAME
    ,F.LENGTH
FROM FISH_INFO F
INNER JOIN FISH_NAME_INFO N
ON F.FISH_TYPE = N.FISH_TYPE
WHERE (F.FISH_TYPE, F.LENGTH) IN
(
SELECT
     FISH_TYPE
    ,MAX(LENGTH) AS LENGTH_MAX
FROM FISH_INFO
GROUP BY 
     FISH_TYPE
)
ORDER BY
     F.ID
;