728x90

< 링크 >
여기를 클릭하세요 (프로그래머스 고득점 Kit 106문제 모음)

여기를 클릭하세요 (26. 특정 물고기를 잡은 총 수 구하기)

< 문제 >
FISH_INFO 테이블에서 잡은 BASS와 SNAPPER의 수를 출력하는 SQL 문을 작성해주세요.
컬럼명은 'FISH_COUNT`로 해주세요.

< 내가 작성한 코드 >
select count(*) as FISH_COUNT
from fish_info a left join fish_name_info b on a.fish_type = b.fish_type
where b.fish_name in ('BASS', 'SNAPPER');

< 풀이 >
1. 두 개의 테이블이 있고, 상황을 봤을 때 Left Join 을 생각했다.
그 이유는 왼쪽 테이블(fish_info)에 데이터가 무수히 많고,
오른쪽 테이블(fish_name_info)에는 데이터가 3개만 있어서
문제가 '종류별 개수'를 조회하라고 했기 때문에
left join을 사용해야겠다고 생각했다.

2. 만약에 inner join을 했다면? 데이터 행이 3개만 출력되었을 것이다.

3. 그래서 left join 구문을 작성한 다음, where 조건 쿼리를 추가했다.
오른쪽 테이블에서 'BASS', 'SNAPPER'를 조회해야 하므로 IN 구문을 생각했다.
where b.fish_name in ('BASS', 'SNAPPER')

+ Recent posts