프로그래머스 - 특정 물고기를 잡은 총 수 구하기 (MySQL)

조민수·2024년 3월 28일
0

Programmers

목록 보기
25/85

Lv2, SQL - Nested Query


문제 설명

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

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

문제

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

컬럼명은 FISH_COUNT로 해주세요.


풀이

  1. Nested Query를 통한 풀이
  • FISH_TYPE의 값을 통해 BASS, SNAPPER의 값의 개수를 센다.
SELECT COUNT(*) AS FISH_COUNT 
FROM FISH_INFO
WHERE FISH_TYPE IN 
(
	SELECT FISH_TYPE FROM FISH_NAME_INFO
	WHERE FISH_NAME IN ("BASS", 'SNAPPER')
)
  1. JOIN을 통한 풀이
  • JOIN, ON을 통해 두 테이블에서 같은 FISH_TYPE의 데이터 수를 센다.
SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO AS F
JOIN FISH_NAME_INFO AS N
ON F.FISH_TYPE = N.FISH_TYPE
WHERE N.FISH_NAME IN ('BASS', 'SNAPPER');
  1. JOIN 명시 없이 풀이
  • 아무래도 이 방식으로 해왔다 보니 제일 익숙하다.
SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO AS F, FISH_NAME_INFO AS N
WHERE F.FISH_TYPE = N.FISH_TYPE
AND N.FISH_NAME IN ('BASS', 'SNAPPER');
profile
사람을 좋아하는 Front-End 개발자

0개의 댓글