본문 바로가기
문제 풀이/프로그래머스

[MYSQL 19] 물고기 종류 별 대어 찾기

by hyeminigo 2024. 9. 13.

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

 

물고기 종류 별로 가장 큰 물고기의 ID(ID), 물고기 이름(FISH_NAME), 길이(LENGTH)를 출력

정렬은 물고기의 ID 오름차순

단, 물고기 종류별 가장 큰 물고기는 1마리만 있으며 10cm 이하의 물고기가 가장 큰 경우는 없습니다.

 


정답 코드

SELECT ID, FISH_NAME, LENGTH
FROM FISH_INFO I JOIN FISH_NAME_INFO N ON I.FISH_TYPE = N.FISH_TYPE
WHERE (I.FISH_TYPE, LENGTH) IN (SELECT FISH_TYPE, MAX(LENGTH) 
                                FROM FISH_INFO
                                GROUP BY FISH_TYPE)
ORDER BY ID

 

MEMO

  • SQL에서는 GROUP BY에 포함되지 않은 모든 열은 집계 함수와 함께 사용되거나, GROUP BY 절에 포함되어야 합니다. 즉, GROUP BY 절에 포함되지 않은 열을 집계함수 없이 SELECT에 사용하려고 할 때 문제가 발생합니다.
// 다음과 같은 에러 발생
실패 (1055, "Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'programmers.I.ID' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by")