Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

파란색가운의 개발 블로그

[SQL 고득점 Kit] SUM/MAX/MIN - 물고기 종류 별 대어 찾기 본문

알고리즘 문제 풀이/프로그래머스

[SQL 고득점 Kit] SUM/MAX/MIN - 물고기 종류 별 대어 찾기

파란색 가운 2024. 7. 21. 15:16

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

 

프로그래머스

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

programmers.co.kr

난이도 : 중상

 

갑자기 문제가 좀 어렵게 다가왔다ㅏ,,,

 

SELECT ID, FISH_NAME, INFO.LENGTH AS LENGTH
FROM FISH_INFO AS INFO
JOIN FISH_NAME_INFO AS NAME
ON NAME.FISH_TYPE = INFO.FISH_TYPE -- 조인으로 일단 테이블 한개로 조져주고
WHERE INFO.LENGTH IN (SELECT MAX(LENGTH) FROM FISH_INFO
                     WHERE FISH_TYPE = NAME.FISH_TYPE
                     GROUP BY FISH_TYPE) -- 이렇게 하면 FISH_TYPE별 맥스 길이가 나오게 된다
                     -- 이렇게 해서 각각 행 한개씩 추출 가능
ORDER BY ID

서브쿼리에 GROUP BY를 통해서 FISH_TYPE별로 가장 큰 길이를 선택하였고,

그 가장 큰 길이에 포함되는 행들만 추출하는 방식 사용

 

JOIN까진 떠올렸는데 서브쿼리를 어디에 짜야하는지가 좀 감이 안오는 것 같다