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

yannie·2024년 10월 14일
0

[문제]

문제
FISH_INFO에서 평균 길이가 33cm 이상인 물고기들을 종류별로 분류하여 잡은 수, 최대 길이, 물고기의 종류를 출력하는 SQL문을 작성해주세요. 결과는 물고기 종류에 대해 오름차순으로 정렬해주시고, 10cm이하의 물고기들은 10cm로 취급하여 평균 길이를 구해주세요.

컬럼명은 물고기의 종류 'FISH_TYPE', 잡은 수 'FISH_COUNT', 최대 길이 'MAX_LENGTH'로 해주세요.

[내가 푼 풀이(오답)]

SELECT
    COUNT(ID) AS FISH_COUNT,
    MAX(LENGTH) AS MAX_LENGTH,
    FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(LENGTH) >= 33
ORDER BY FISH_TYPE
;
  • 오답 이유:
    • 같은 출력문이 나오긴 하지만 틀린 풀이라고 나온다.
    • 이유는 데이터 안에 있는 NULL값을 그대로 두었기 때문이다.
    • LENGTH 데이터에 NULL값이 있는지 확인하지 않았다.
    • 즉, 10cm이하인 물고기들은 10cm로 취급하는 조건을 충족시키지 못했다.

[내가 푼 풀이(정답)]

SELECT
    COUNT(ID) AS FISH_COUNT,
    MAX(LENGTH) AS MAX_LENGTH,
    FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(IFNULL(LENGTH,10)) >= 33
ORDER BY FISH_TYPE
;

[코드리뷰]

FISH_TYPE을 기준으로 그룹화하여
HAVING절을 사용해 LENGTH의 평균이 33cm 이상인 것으로 계산한다.
+IFNULL()을 사용하여 NULL이 아니라면 LENGTH를, NULL이라면 10을 반환하여 계산한다.

기억해!

IFNULL(컬럼명, 'NULL일 경우 대체 값')

0개의 댓글