FISH_NAME_INFO에서 물고기의 종류 별 물고기의 이름과 잡은 수를 출력하는 SQL문을 작성해주세요.
물고기의 이름 컬럼명은 FISH_NAME, 잡은 수 컬럼명은 FISH_COUNT로 해주세요.
결과는 잡은 수 기준으로 내림차순 정렬해주세요.
SELECT
A.FISH_NAME,
COUNT(B.ID) AS FISH_COUNT
FROM FISH_NAME_INFO A
INNER JOIN FISH_INFO B
ON A.FISH_TYPE = B.FISH_TYPE
GROUP BY B.FISH_TYPE
;
-> 오류 발생
" 실패 (1055, "Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'programmers.A.FISH_NAME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by")"
오류가 발생한 원인은
GROUP BY는 B.FISH_TYPE을 기준으로 하고 있지만, SELECT절에는 A.FISH_NAME이 들어있다. A.FISH_NAME은 GROUP BY에 포함되지 않은 비집계된 열이기 때문에 에러가 발생하였다.
SELECT
COUNT(B.ID) AS FISH_COUNT,
A.FISH_NAME
FROM FISH_NAME_INFO A
INNER JOIN FISH_INFO B
ON A.FISH_TYPE = B.FISH_TYPE
GROUP BY A.FISH_NAME
ORDER BY FISH_COUNT DESC
;