[프로그래머스 코딩테스트/MySQL] 특정 물고기를 잡은 총 수 구하기

2025. 1. 21. 14:13·Minding's Programming/프로그래머스 코딩테스트
728x90
반응형

문제 설명
낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.

Column name Type Nullable
ID INTEGER FALSE
FISH_TYPE INTEGER FALSE
LENGTH FLOAT TRUE
TIME DATE FALSE
단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다.

FISH_NAME_INFO 테이블은 물고기의 이름에 대한 정보를 담고 있습니다. FISH_NAME_INFO 테이블의 구조는 다음과 같으며, FISH_TYPE, FISH_NAME 은 각각 물고기의 종류(숫자), 물고기의 이름(문자) 입니다.

Column name Type Nullable
FISH_TYPE INTEGER FALSE
FISH_NAME VARCHAR FALSE

 

문제
FISH_INFO 테이블에서 잡은 BASS와 SNAPPER의 수를 출력하는 SQL 문을 작성해주세요.

컬럼명은 'FISH_COUNT`로 해주세요.

 

예시
예를 들어 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 | 2 | 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' 는 물고기 종류 0에 해당하고, 'SNAPPER' 는 물고기 종류 1에 해당하므로 잡은 'BASS' 와 'SNAPPER' 수는 7마리입니다.

FISH_COUNT
7

 

문제 풀이

SELECT SUM(FISH_COUNT) AS FISH_COUNT
FROM (
    SELECT COUNT(fni.FISH_NAME) AS FISH_COUNT
    FROM FISH_INFO fi
    JOIN FISH_NAME_INFO fni ON fi.FISH_TYPE = fni.FISH_TYPE
    WHERE fni.FISH_NAME = 'BASS' OR fni.FISH_NAME = 'SNAPPER'
    GROUP BY fni.FISH_NAME
) AS subquery;

 

FISH_NAME이라는 칼럼은 FISH_NAME_INFO라는 테이블에 따로 관리되고 있었으므로 JOIN을 통해 'BASS'와 'SNAPPER'라는 이름을 가진 물고기를 WHERE문으로 가려냈다.

 

COUNT 함수와 GROUP BY를 통해 각 물고기의 숫자를 알아냈으나, 문제에서 원하는 것은 두 물고기의 합계였으므로 위 쿼리를 서브쿼리로 돌린 다음, SUM 함수를 통해 하나의 칼럼으로 만들었다.

728x90

'Minding's Programming > 프로그래머스 코딩테스트' 카테고리의 다른 글

[코딩테스트/Python] 프로그래머스 코딩테스트 - 문자열 압축  (0) 2024.10.04
[코딩테스트/Python] 프로그래머스 코딩테스트 - 주사위 게임 3  (0) 2024.10.02
[코딩테스트/Python] 프로그래머스 코딩테스트 - 사탕 담기  (0) 2024.09.30
[코딩테스트/Python] 프로그래머스 코딩테스트 - 운송 트럭  (1) 2024.09.30
[코딩테스트/Python] 프로그래머스 코딩테스트 - 나머지 한 점  (1) 2024.09.30
'Minding's Programming/프로그래머스 코딩테스트' 카테고리의 다른 글
  • [코딩테스트/Python] 프로그래머스 코딩테스트 - 문자열 압축
  • [코딩테스트/Python] 프로그래머스 코딩테스트 - 주사위 게임 3
  • [코딩테스트/Python] 프로그래머스 코딩테스트 - 사탕 담기
  • [코딩테스트/Python] 프로그래머스 코딩테스트 - 운송 트럭
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    딥러닝
    django python
    코딩테스트
    KBO
    django
    메이저리그
    머신러닝
    에어플로우
    파이썬
    Python
    야구
    데이터분석
    mlb stats api
    AWS
    데이터 엔지니어
    칼만필터는어렵지않아
    pygame
    MLB
    게임개발
    칼만필터는어렵지않아파이썬
    파이썬게임개발
    질롱코리아
    칼만필터
    파이게임
    FastAPI
    프로그래머스
    칼만필터는어렵지않아python
    넘파이
    Airflow
    KalmanFilter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[프로그래머스 코딩테스트/MySQL] 특정 물고기를 잡은 총 수 구하기
상단으로

티스토리툴바