문제풀이/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 (서브쿼리)을 통해 서브 쿼리로 추출된 레코드를 튜플과 비교하여 필터링하는 방법을 배웠음