문제풀이/SQL

물고기 종류 별 대어 찾기(SQL)

soo-dal 2024. 4. 12. 10:41

문제 

https://school.programmers.co.kr/learn/courses/30/lessons/293261

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

문제 접근 방식

1. 물고기 종류 별로 가장 큰 물고기 길이
>> 종류 별로 그룹하하고, MAX를 사용하여 길이를 구한다
>> SELECT MAX(length), type FROM ~~~ GROUP BY type

2. 가장 큰 물고기의 id, 이름, length 
>> 테이블이 나눠져 있기 때문에 두 테이블을 연관시킬 필요가 있음.
>> 또한, 종류 별 최대 길이에 해당하는 레코드를 fish_info 테이블에서 찾아야함
>> 서브쿼리를 활용해야겠다는 알겠는데 구체적인 방법을 몰라서 검색
>> 
SELECT ~~ FRORM fish_info
JOIN fish_name_info
ON id = id
WHERE (fish_info의 length, fish_ifno의 type) IN (1번의 select 쿼리)  

>> 튜플화 해서 튜플과 일치하는 레코드를 반환

3. id 기준 정렬
>> ORDER BY id

 

 

코드

SELECT id, fni.fish_name,length FROM fish_info fi
JOIN fish_name_info fni
ON fi.fish_type=fni.fish_type
WHERE (length,fi.fish_type) in
(SELECT max(length),fish_type from fish_info
GROUP BY fish_type)
ORDER BY id;

 

 

회고

WHERE 튜플 IN (서브쿼리)을 통해 서브 쿼리로 추출된 레코드를 튜플과 비교하여 필터링하는 방법을 배웠음