물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요.
물고기의 ID 컬럼명은 ID, 이름 컬럼명은 FISH_NAME, 길이 컬럼명은 LENGTH로 해주세요.
결과는 물고기의 ID에 대해 오름차순 정렬해주세요.
단, 물고기 종류별 가장 큰 물고기는 1마리만 있으며 10cm 이하의 물고기가 가장 큰 경우는 없습니다.
풀이1
with tb as ( select FISH_TYPE, max(LENGTH) from FISH_INFO group by FISH_TYPE ) select distinct I.ID ,N.FISH_NAME ,I.LENGTH from FISH_INFO as I, FISH_NAME_INFO as N, tb where 1=1 and I.FISH_TYPE = N.FISH_TYPE and (I.FISH_TYPE, I.LENGTH) in (select * from tb) order by I.ID
풀이2
select I.ID ,N.FISH_NAME ,I.LENGTH from FISH_INFO as I, FISH_NAME_INFO as N where 1=1 and I.FISH_TYPE = N.FISH_TYPE and (I.FISH_TYPE, I.LENGTH) in ( select FISH_TYPE, max(LENGTH) from FISH_INFO group by FISH_TYPE )
문제의 난이도가 높아질수록 서브 쿼리의 사용 빈도 또한 높아지고 있다...
서브쿼리에 대한 내용도 꼼꼼하게 학습해야겠다 :)
https://school.programmers.co.kr/learn/courses/30/lessons/293261