[프로그래머스] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

yenpkr·2025년 3월 3일
0

sql

목록 보기
43/91
post-thumbnail

문제

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로 만든 테이블을 생성해 풀었다.

🚨 error

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% 정답이라고 뜬다.

0개의 댓글