Develop/Daily Algorithm Practice 공략집

[오늘의 알고리즘 1문제] - <잡은 물고기의 평균 길이 구하기>

쿼카홀릭 2025. 6. 18. 23:07

2025.06.18(Wed.)

 

[오늘의 알고리즘 1문제] - 프로그래머스 MySQL

<잡은 물고기의 평균 길이 구하기>

 

잡은 물고기의 평균 길이를 출력하는 SQL문을 작성해주세요.

평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH로 해주세요.
평균 길이는 소수점 3째자리에서 반올림하며, 10cm 이하의 물고기들은 10cm 로 취급하여 평균 길이를 구해주세요.

10cm 이하의 물고기는 10cm 로 취급하므로 총 물고기의 길이의 합은 30 + 50 + 40 + 20 + 10 +10 = 160 이며 총 물고기의 수는 6마리이므로 잡은 물고기의 평균 길이는 160/6 = 26.666.. 입니다. 이를 소수점 3째자리에서 반올림하면 26.67 이므로 결과는 다음과 같아야 합니다.

AVERAGE_LENGTH
26.67

 

<내가 작성한 코드>

select round(avg(a.length),2) as average_length
from 
(
select
    case
        when length is null then 10
        when length <=10 then 10
        else length
        end as length
from fish_info
) a

서브쿼리로 코드를 작성하였다.

정답입니당.

 

<복습할 내용>

1. round(값, 소수점)

round 함수의 소수점을 입력할 때는 마지막 반올림 하는 소수점 자리의 위치값으로 적어줘야 한다.

ex) 소수점 3째자리에서 반올림 해주세요 = round(값, 2)

 

2. if(조건, 조건이 참일 경우, 조건이 거짓일 경우)

ex) 조건 : 18살 이하인 경우, 조건이 참일 경우 : 미성년자를 반환, 조건이 거짓일 경우 : 나이를 반환

select name,
	   if(age<=18, '미성년자', age) as age_status
from users

 

3. case when 사용시 유의 사항

탭으로 간격을 잘 맞춰주어야 정상작동 하며, case when으로 시작하고 끝에 꼭 end로 끝내야 한다.

ex)

select
	case
    		when
        	end