노아

[프로그래머스] 물고기 종류 별 대어 찾기 본문

알고리즘/SQL

[프로그래머스] 물고기 종류 별 대어 찾기

Noaahhh 2024. 9. 20. 22:47

 

Question

 

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

 

 

Pseudocode

 

 

  1. 테이블 설명:
    • fish_info: 어종 정보가 담긴 테이블.
    • fish_name_info: 어종 이름 정보를 가진 테이블.
  2. 서브쿼리 사용:
    • 서브쿼리를 사용하여 각 어종별로 최대 길이(MAX(length))를 계산하고, 이를 m이라는 별칭으로 가져옵니다.
  3. JOIN 조건:
    • fish_info와 fish_name_info를 어종 타입(fish_type)을 기준으로 조인합니다.
    • 서브쿼리에서 계산한 최대 길이(m_length)와 실제 길이(length)가 일치하는 행만 가져오도록 필터링합니다.
  4. 출력:
    • 어종의 ID(i.id), 이름(fish_name), 길이(length)를 출력합니다.
  5. 정렬:
    • ID를 기준으로 오름차순 정렬합니다.

 

 

 

Code

 

SELECT i.id, fish_name, length
FROM fish_info i
         JOIN fish_name_info n
              ON i.fish_type = n.fish_type
         JOIN (SELECT fish_type, MAX(length) AS m_length
               FROM fish_info
               GROUP BY fish_type) m ON i.fish_type = m.fish_type AND i.length = m.m_length
ORDER BY 1