https://school.programmers.co.kr/learn/courses/30/lessons/293261
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드설명
INNER JOIN + SUBQUERY + GROUP BY + MAX 를 활용합니다.
문제에서 유의할점은, 첫 INNER JOIN을 통해서 각 물고기 별로 최대 길이를 반환합니다.
이떄, 단순히 최대 길이만 반환한다면, 여러가지가 나오면서, 최대값을 가진 모든 물고기 정보가 나오게 됩니다.
그러므로 FISH_TYPE도 함꼐 반환하여서 어떤 물고기일 떄 최대 LENGTH 인지와 함꼐 JOIN합니다.
INNER JOIN ( select fi.fish_type as fish_type, max(fi.length) as max_length from fish_info as fi group by fi.fish_type ) AS FI2
ON FI.FISH_TYPE = FI2.fish_type AND FI.LENGTH = FI2.max_length
위의 코드입니다.
코드
SELECT FI.ID, FNI.FISH_NAME, FI2.max_length AS LENGTH
FROM FISH_INFO AS FI
INNER JOIN ( select fi.fish_type as fish_type, max(fi.length) as max_length from fish_info as fi group by fi.fish_type ) AS FI2
ON FI.FISH_TYPE = FI2.fish_type AND FI.LENGTH = FI2.max_length
INNER JOIN FISH_NAME_INFO AS FNI
ON FI.FISH_TYPE = FNI.FISH_TYPE
ORDER BY FI.ID ASC