Every Step Matters

[프로그래머스 SQL Lv.1] 잡은 물고기의 평균 길이 구하기 (MySQL) 본문

Database/SQL

[프로그래머스 SQL Lv.1] 잡은 물고기의 평균 길이 구하기 (MySQL)

imnyoung 2025. 12. 2. 17:45

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/293259

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. 테이블 : FISH_INFO

Column name Type Nullable
ID INTEGER FALSE
FISH_TYPE INTEGER FALSE
LENGTH FLOAT TRUE
TIME DATE FALSE
잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH가 NULL 이며, LENGTH에 NULL 만 있는 경우는 없다.

 

2. 문제

(1) 잡은 물고기의 평균 길이를 출력하는 SQL문을 작성해주세요. (2) 평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH로 해주세요.
(3) 평균 길이는 소수점 3째자리에서 반올림하며, (4) 10cm 이하의 물고기들은 10cm 로 취급하여 평균 길이를 구해주세요.

 

3. 문제풀이

(1) 잡은 물고기의 평균 길이를 출력

평균값을 구하는 함수 AVG를 활용한다.

SELECT AVG(length)
FROM fish_info

(2) 평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH로

별칭을 활용한다.

SELECT AVG(length) average_length
FROM fish_info

(3) 평균 길이는 소수점 3째자리에서 반올림

소수점 3째자리에서 2째자리로 반올림이므로, ROUND함수를 이용하고 두번째 인자로 2를 설정해준다.(몇번째 자리까지 표시할 것인지를 설정!)

SELECT ROUND(AVG(length), 2) average_length
FROM fish_info

(4) 10cm 이하의 물고기들은 10cm로 취급하여 계산

10cm 이하의 물고기들은 현재 length 값이 null이므로, 10으로 바꿔줘야 한다.

이를 위해 IFNULL 함수를 이용하여 length값이 null이면 10으로 취급한다.

SELECT ROUND(AVG(IFNULL(length, 10)), 2) average_length
FROM fish_info

 

4. 정답

따라서 정답은

SELECT ROUND(AVG(IFNULL(length, 10)), 2) average_length
FROM fish_info