Algorithm/SQL
[SQL] 프로그래머스 - 물고기 종류 별 대어 찾기
호찌민
2024. 7. 13. 14:14
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
;