728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
-- 코드를 작성해주세요
SELECT C.ID, F.FISH_NAME, F.LENGTH
FROM (FISH_INFO C JOIN FISH_NAME_INFO D ON C.FISH_TYPE = D.FISH_TYPE) JOIN (SELECT MAX(A.LENGTH) AS LENGTH, B.FISH_NAME
FROM FISH_INFO A JOIN FISH_NAME_INFO B ON A.FISH_TYPE = B.FISH_TYPE
GROUP BY B.FISH_NAME) F ON C.LENGTH = F.LENGTH AND D.FISH_NAME = F.FISH_NAME
ORDER BY C.ID;
굉장히 .. 지저분한 코드 여기서 일단 테이블을 분리해보면,
-- 코드를 작성해주세요
WITH TOP AS(
SELECT MAX(A.LENGTH) AS LENGTH, B.FISH_NAME
FROM FISH_INFO A JOIN FISH_NAME_INFO B ON A.FISH_TYPE = B.FISH_TYPE
GROUP BY B.FISH_NAME
)
SELECT C.ID, TOP.FISH_NAME, TOP.LENGTH
FROM (FISH_INFO C JOIN FISH_NAME_INFO D ON C.FISH_TYPE = D.FISH_TYPE) JOIN TOP
ON C.LENGTH = TOP.LENGTH AND D.FISH_NAME = TOP.FISH_NAME
ORDER BY C.ID;
이렇게 TOP 테이블을 하나 따로 분리해서 생성해줬다.
처음 생각은 FISH_TYPE으로 GROUP BY 하면 될 거라 생각했는데, ID와 FISH_TYPE이 둘 다 int 타입이라서 불가능했다.
728x90
'코테 > SQL' 카테고리의 다른 글
| [Programmers] 월별 잡은 물고기 수 구하기 (MySQL) (0) | 2024.04.14 |
|---|---|
| [Programmers] 대장균들의 자식의 수 구하기 (MySQL) (0) | 2024.04.13 |
| [Programmers] 부서별 평균 연봉 조회하기 (MYSQL) (1) | 2024.03.20 |
| [Leetcode] SQL50 문제 (MYSQL) (0) | 2024.02.08 |
| [Programmers] PCSQL 샘플문제 4번 (MYSQL) (0) | 2024.02.02 |