SQL 고득점 Kit - 9.2

김동현·2024년 9월 2일

SQL 고득점 Kit

목록 보기
45/56

GROUP BY - 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

문제

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

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

https://school.programmers.co.kr/learn/courses/30/lessons/298519

풀이

WITH mean_length AS(
    SELECT FISH_TYPE
    FROM 
        (SELECT FISH_TYPE, IFNULL(LENGTH, 10) LENGTH
         FROM FISH_INFO) fish
    GROUP BY FISH_TYPE
    HAVING AVG(LENGTH) >= 33
)

SELECT 
    COUNT(*) FISH_COUNT, 
    MAX(LENGTH) MAX_LENGTH,
    f.FISH_TYPE
FROM mean_length m
INNER JOIN FISH_INFO f
ON m.FISH_TYPE = f.FISH_TYPE
GROUP BY f.FISH_TYPE
ORDER BY f.FISH_TYPE

리뷰

  • NULL값을 10으로 대체하는 것이 포인트다. IFNULL을 이용하여 대체를 진행하는데 서브쿼리를 이용하여 FROM에서 바로 사용하였다.
  • HAVING을 통해 평균 길이가 33이상인 물고기만 추출하고 조인을 통해 문제를 해결했다.

GitHub

특정 조건을 만족하는 물고기별 수와 최대 길이 구하기
https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/298519.%E2%80%85%ED%8A%B9%EC%A0%95%E2%80%85%EC%A1%B0%EA%B1%B4%EC%9D%84%E2%80%85%EB%A7%8C%EC%A1%B1%ED%95%98%EB%8A%94%E2%80%85%EB%AC%BC%EA%B3%A0%EA%B8%B0%EB%B3%84%E2%80%85%EC%88%98%EC%99%80%E2%80%85%EC%B5%9C%EB%8C%80%E2%80%85%EA%B8%B8%EC%9D%B4%E2%80%85%EA%B5%AC%ED%95%98%EA%B8%B0

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글