[Programmers] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

HAHAHELLO·2025년 3월 20일

SQL

목록 보기
12/17

Lv.3 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

문제

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

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

예제

나의 풀이

LENGTH가 NULL일 때 (10 이하일 때) 10으로 간주하여 푸는 것만 신경쓰고 아래와 같이 코드를 짰더니 정답으로 인정이 되긴 했는데 채점결과가 60밖에 나오지 않았다. 다시 생각해보니, LENGTH가 NULL일 때를 10으로 만든 컬럼을 중에 MAX를 뽑는 연산이 적절한 풀이였다.
정답 코드는 아래에...

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

정답 코드

SELECT
	COUNT(*) AS FISH_COUNT,
    MAX(LENGTH) AS MAX_LENGTH,
    FISH_TYPE
FROM
	(SELECT 
    	FISH_TYPE,
    	IFNULL(LENGTH, 10) AS LENGTH
     FROM 
     	FISH_INFO) AS NEW_INFO
GROUP BY 
	FISH_TYPE
HAVING 
	AVG(LENGTH) >= 33
ORDER BY
	FISH_TYPE ASC;
profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글