IT/SQL 테스트

[SUM, MAX, MIN] 물고기 종류 별 대어 찾기 (MySQL)

자연산 금붕어 2025. 2. 6. 16:27

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

- 문제 :

물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요.
물고기의 ID 컬럼명은 ID, 이름 컬럼명은 FISH_NAME, 길이 컬럼명은 LENGTH로 해주세요.
결과는 물고기의 ID에 대해 오름차순 정렬해주세요.
단, 물고기 종류별 가장 큰 물고기는 1마리만 있으며 10cm 이하의 물고기가 가장 큰 경우는 없습니다.

 

- 풀이 :

  • MySQL
-- FISH_INFO : ID, FISH_TYPE, LENGTH, TIME
-- FISH_NAME_INFO : FISH_TYPE, FISH_NAME

SELECT i.ID, n.FISH_NAME, i.LENGTH
FROM FISH_INFO i
jOIN FISH_NAME_INFO n ON i.FISH_TYPE = n.FISH_TYPE
WHERE (n.FISH_TYPE, i.LENGTH) 
    IN (
        SELECT FISH_TYPE, MAX(LENGTH)
        FROM FISH_INFO
        GROUP BY FISH_TYPE )
order by i.id;
  • where절 안에 select절 해석
    • GROUP BY와  MAX 함수를 이용해 물고기 종류별 가장 큰 물고기만 찾음
  • fish_type이 같은 물고기를 join on을 통해 테이블 만듦
  • 그 중 where절 안의 select절에 포함된 물고기 정보만 select
반응형