10cm 이하 물고기들을 10cm로 취급하는 부분에서 애먹었던 문제이다.
select count(*) FISH_COUNT, max(length) MAX_LENGTH, fish_type FISH_TYPE
from (select id,fish_type,ifnull(length,10) length,time from fish_info) a
group by FISH_TYPE
having avg(length) >= 33
order by FISH_TYPE asc
서브쿼리를 사용해 10cm 이하 물고기들을 10cm로 만든 테이블을 생성해 풀었다.
select count(*) FISH_COUNT, max(ifnull(length,10)) MAX_LENGTH, fish_type FISH_TYPE
from fish_info
group by 3
having avg(length)>= 33
order by 3 asc
이 코드는 select문에서 ifnull을 사용해 null값일 경우(10cm 이하일 경우), 10으로 처리되도록 하는 코드이다. 60% 정답이었던 코드이다. 문제는 having에서 ifnull 처리를 하지 않아 60% 정답이었다.
select count(*) FISH_COUNT, max(ifnull(length,10)) MAX_LENGTH, fish_type FISH_TYPE
from fish_info
group by 3
having avg(ifnull(length,10))>= 33
order by 3 asc
having 절에서도 ifnull 처리를 해주면, 100% 정답이라고 뜬다.