Data Science/SQL
[프로그래머스 sql] if 활용하기
Tashapark
2025. 4. 1. 23:37
728x90
특정 조건을 만족하는 물고기별 수와 최대 길이 구하기
- ..? 뭐가 문제인 걸까..?
select count(*) as FISH_COUNT,
avg(length) as MAX_LENGTH, FISH_TYPE
from FISH_INFO
where length in (select case when length <= 10 then 10 else length end as length
from FISH_INFO )
group by FISH_TYPE
having avg(length) >= 33
order by FISH_TYPE;
- 위처럼 하면, 10으로 길이가 다 고정되어서 나올 수 있음.
그래서 아래처럼 having절에 바로 case when then 넣었음.
- 또, 문제를 잘못 이해해서 맥스 렝쓰를 구해야 하는데 평균을 출력하는 식으로 썼음.
SELECT COUNT(*) AS FISH_COUNT,
MAX(length) AS MAX_LENGTH,
FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(CASE WHEN length <= 10 THEN 10 ELSE length END) >= 33
ORDER BY FISH_TYPE;
- but, 60점으로 100점이 안 나옮..
........ 문제 똑바로 안 읽냐.. null이잖아. 10cm이하는..
SELECT COUNT(*) AS FISH_COUNT,
MAX(LENGTH) AS MAX_LENGTH,
FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(IF(IFNULL(LENGTH, 0) <= 10, 10, LENGTH)) >= 33
ORDER BY FISH_TYPE;
- sql도 if 절 사용 가능함. if(조건문, 해당할 때 값, 해당 칼럼)
- 일단 null을 0으로 바꿔서 비교가 되게 할 것.
- 그리고 10보다 작으면 10 넣어줌.
728x90
반응형