with mf as (
select nn.fish_type, nn.fish_name, max(ii.length) as lt
from fish_info ii
join fish_name_info nn on nn.fish_type = ii.fish_type
group by 1, 2
)
select i.id, mf.fish_name, mf.lt as length
from fish_info i
left join mf mf on (i.length = mf.lt and i.fish_type = mf.fish_type)
where mf.lt is not null
order by 1
with절 사용하지 않으면 id와 함께 group by 해야해서 id 별 길이를 출력해버린다.
그래서 id를 제외하고 join 시 길이와 이름을 매핑시키기 위해 type과 length를 조건으로 주고 left join 했다.
최대값과 다른 물고기들의 길이가 null이 될것이므로 is no null로 필터링 했다.
'프로그래머스 > 코딩테스트 연습' 카테고리의 다른 글
SQL lv3 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2024.05.03 |
---|---|
SQL lv4 언어별 개발자 분류하기 (0) | 2024.05.02 |
SQL lv4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (3) | 2024.04.29 |
SQL lv3 카테고리 별 도서 판매량 집계하기 (0) | 2024.04.24 |
SQL lv4 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2024.04.24 |