https://school.programmers.co.kr/learn/courses/30/lessons/298519
코딩테스트 연습 > GROUP BY > 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기
문제 분석
난이도: LEVEL3
문제 요구사항
FISH_INFO에서 평균 길이가 33cm 이상인 물고기들을 종류별로 분류하여 잡은 수, 최대 길이, 물고기의 종류를 출력하는 SQL문을 작성해주세요.
결과는 물고기 종류에 대해 오름차순 정렬해주시고, 10cm이하의 물고기들은 10cm로 취급하여 평균 길이를 구해주세요.
컬럼명은 물고기의 종류 'FISH_TYPE', 잡은 수 'FISH_COUNT', 최대 길이 'MAX_LENGTH'로 해주세요.
정답 코드1(CTE 활용)
WITH FISH_CTE AS (
SELECT FISH_TYPE, IF(LENGTH IS NULL, 10, LENGTH) LENGTH
FROM FISH_INFO
)
SELECT COUNT(*) FISH_COUNT, MAX(LENGTH) MAX_LENGTH, FISH_TYPE
FROM FISH_CTE
GROUP BY FISH_TYPE
HAVING AVG(LENGTH) >= 33
ORDER BY FISH_TYPE
1. CTE를 활용하여 길이가 10cm 이하인 물고기들(NULL)을 10cm 변환
2. 미리 구해둔 CTE를 활용하여 물고기 타입으로 GROUP BY 하고 HAVING 평균 길이가 33 cm 이상인 그룹만 필터링
정답 코드2(IFNULL 활용)
SELECT COUNT(*) FISH_COUNT, MAX(LENGTH) MAX_LENGTH, FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(IFNULL(LENGTH, 10)) >= 33
ORDER BY FISH_TYPE
'Algorithm > Programmers SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 부서별 평균 연봉 조회하기 (1) | 2024.09.15 |
---|---|
[MySQL] 프로그래머스 물고기 종류 별 대어 찾기 (2) | 2024.09.15 |
[MySQL] 프로그래머스 대장균들의 자식의 수 구하기 (0) | 2024.09.15 |
[MySQL] 프로그래머스 대장균의 크기에 따라 분류하기 1 (0) | 2024.09.15 |
[MySQL] 프로그래머스 대장균의 크기에 따라 분류하기 2 (0) | 2024.09.12 |