[프로그래머스] 물고기 종류 별 대어 찾기/MySQL - Lv.3

2024. 10. 29. 09:58·Coding Test/SQL

❓문제

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 이하의 물고기가 가장 큰 경우는 없습니다.


예시

예를 들어 FISH_INFO 테이블이 다음과 같고

ID FISH_TYPE LENGTH TIME
0 0 30 2021/12/04
1 0 50 2020/03/07
2 0 40 2020/03/07
3 1 20 2022/03/09
4 1 NULL 2022/04/08
5 2 13 2021/04/28
6 0 60 2021/07/27
7 0 55 2021/01/18
8 2 73 2020/01/28
9 1 73 2021/04/08
10 2 22 2020/06/28
11 2 17 2022/12/23

FISH_NAME_INFO 테이블이 다음과 같다면

FISH_TYPE FISH_NAME
0 BASS
1 SNAPPER
2 ANCHOVY

'BASS' 중 가장 큰 물고기는 60cm 로 물고기 ID 가 6이고, 'SNAPPER' 중 가장 큰 물고기는 73cm 로 물고기 ID가 9입니다. 'ANCHOVY' 중 가장 큰 물고기는 73cm 로 물고기 ID가 8입니다. 따라서 물고기 ID(ID) 에 대해 오름차순 정렬한다면 결과는 다음과 같습니다.

ID FISH_NAME LENGTH
6 BASS 60
8 ANCHOVY 73
9 SNAPPER 73

📌유형

SUM, MAX, MIN

✍🏻풀이

서브쿼리를 사용한 이유
- group by fish_type으로 실행하면 ID가 의존적이므로 오류가 발생한다.
물고기 종류 별로 max값을 구한 서브쿼리 안에 최대 길이를 가진 물고기라면
그것의 ID, 물고기 이름, 길이를 ID에 대해 오름차순으로 출력한다.

💻코드

select ID, FISH_NAME, LENGTH
from FISH_INFO F inner join FISH_NAME_INFO N on F.FISH_TYPE = N.FISH_TYPE
# left outer join을 사용해도 무관
where (F.FISH_TYPE, LENGTH) in (select FISH_TYPE, max(LENGTH)
                               from FISH_INFO
                               group by FISH_TYPE)
order by ID
저작자표시 비영리 변경금지 (새창열림)

'Coding Test > SQL' 카테고리의 다른 글

[프로그래머스] 부모의 형질을 모두 가지는 대장균 찾기/MySQL - Lv.2  (0) 2024.10.31
[프로그래머스] 조건에 맞는 개발자 찾기/MySQL - Lv.2  (1) 2024.10.31
[프로그래머스] 우유와 요거트가 담긴 장바구니/MySQL - Lv.4  (0) 2024.09.29
[프로그래머스] 조건에 맞는 사용자 정보 조회하기/MySQL - Lv.3  (2) 2024.09.28
[프로그래머스] 대장균의 크기에 따라 분류하기1/MySQL - Lv.3  (0) 2024.09.28
'Coding Test/SQL' 카테고리의 다른 글
  • [프로그래머스] 부모의 형질을 모두 가지는 대장균 찾기/MySQL - Lv.2
  • [프로그래머스] 조건에 맞는 개발자 찾기/MySQL - Lv.2
  • [프로그래머스] 우유와 요거트가 담긴 장바구니/MySQL - Lv.4
  • [프로그래머스] 조건에 맞는 사용자 정보 조회하기/MySQL - Lv.3
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future💕
    The Engineer, Lucy
    • Instagram
    • GitHub
  • 전체
    오늘
    어제
    • 분류 전체보기 (174)
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (88)
        • Algorithms (80)
        • SQL (7)
      • ETC (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 링크

    • Lucy's Instagram
    • Lucy's GitHub
  • 인기 글

  • 태그

    dfs
    Linux
    docker
    코딩테스트 공부
    리눅스마스터 2급
    리눅스마스터
    오블완
    programmers
    Kubernetes
    bfs
    쿠버네티스
    백준
    Java
    다이나믹 프로그래밍
    Shell
    network
    cs 기초 지식 정리
    자바
    쉘 스크립트
    네트워크 기초 지식
    리눅스
    프로그래머스
    티스토리챌린지
    셸 스크립트
    Shell Script
    네트워크
    너비우선탐색
    Baekjoon
    도커
    K8s
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
The Engineer, Lucy
[프로그래머스] 물고기 종류 별 대어 찾기/MySQL - Lv.3
상단으로

티스토리툴바