https://school.programmers.co.kr/learn/courses/30/lessons/293259
코딩테스트 연습 > IS NULL > 잡은 물고기의 평균 길이 구하기
문제 분석
잡은 물고기의 평균 길이를 출력하는 SQL문을 작성
평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH
평균 길이는 소수점 3째자리에서 반올림하며, 10cm 이하의 물고기들은 10cm 로 취급하여 평균 길이를 구하라
평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH AS AVERAGE_LENGTH
소수점 3째자리에서 반올림의 결과는 소수점 두 자리까지이다. ROUND(결과 , 2): 소수점 두 자리까지 반올림
정답 코드1 (WHEN CASE 서브 쿼리 활용)
SELECT ROUND(AVG(LENGTH), 2) AS AVERAGE_LENGTH
FROM(
SELECT
CASE
WHEN LENGTH IS NULL THEN 10
ELSE LENGTH
END AS LENGTH
FROM FISH_INFO
) AS SUB
FROM절 서브 쿼리
CASE문 사용
LENGTH 가 NULL 이면 10을 반환
아니라면 원래의 LENGTH 반환
메인 쿼리
SELECT ROUND(AVG(LENGTH), 2) AS AVERAGE_LENGTH
AVG(LENGTH)를 사용해서 평균을 구하고 ROUND(AVG(LENGTH), 2) 활용하여 평균을 소수점 두 자리까지 반올림
정답 코드2( IFNULL() 활용 )
SELECT ROUND(AVG(IFNULL(LENGTH, 10)), 2) AS AVERAGE_LENGTH
FROM FISH_INFO
IFNULL(expression, replacement)
expression이 NULL인 경우 replacement 반환 아니라면 expression 자체를 반환한다.
SQL Server: ISNULL(expression, replacement)
MySQL: IFNULL(expression, replacement)
PostgreSQL: COALESCE(expression, replacement )
정답 코드3 (정답 코드2에서 IFNULL 사용 X)
SELECT ROUND(AVG(
CASE
WHEN LENGTH IS NULL THEN 10
ELSE LENGTH
END), 2) AS AVERAGE_LENGTH
FROM FISH_INFO
정답 코드4 (AVG() 사용 X)
SELECT ROUND(SUM(
CASE
WHEN LENGTH IS NULL THEN 10
ELSE LENGTH
END) / count(*), 2) AS AVERAGE_LENGTH
FROM FISH_INFO
'Algorithm > Programmers SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 Python 개발자 찾기 (0) | 2024.08.28 |
---|---|
[MySQL] 프로그래머스 잔챙이 잡은 수 구하기 (0) | 2024.08.28 |
[MySQL] 프로그래머스 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (0) | 2024.08.27 |
[MySQL] 프로그래머스 한 해에 잡은 물고기 수 구하기 (0) | 2024.08.27 |
[MySQL] 프로그래머스 가장 큰 물고기 10마리 구하기 (0) | 2024.08.27 |