프로그래머스 SQL 고득점 Kit - 물고기 종류 별 잡은 수 구하기

Jinyoung Cheon·2025년 8월 17일
1

코딩테스트

목록 보기
25/25

프로그래머스 SQL 고득점 Kit
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

GROUP BY

problem

FISH_NAME_INFO에서 물고기의 종류 별 물고기의 이름과 잡은 수를 출력하는 SQL문을 작성해주세요.
물고기의 이름 컬럼명은 FISH_NAME, 잡은 수 컬럼명은 FISH_COUNT로 해주세요.
결과는 잡은 수 기준으로 내림차순 정렬해주세요.

code

SELECT COUNT(*) AS FISH_COUNT,
       B.FISH_NAME AS FISH_NAME

FROM FISH_INFO A

JOIN FISH_NAME_INFO B

ON A.FISH_TYPE = B.FISH_TYPE

GROUP BY B.FISH_TYPE, B.FISH_NAME

ORDER BY FISH_COUNT DESC; 

note

처음에 작성한 쿼리는 다음과 같다.

SELECT COUNT(A.FISH_TYPE) AS FISH_COUNT, 
	   B.FISH_NAME AS FISH_NAME

FROM FISH_INFO AS A

JOIN FISH_NAME_INFO AS B

ON A.FISH_TYPE = B.FISH_TYPE

GROUP BY A.FISH_TYPE

ORDER BY FISH_COUNT;

안됬던 이유는 뭘까...

실패 (1055, "Expression #3 of SELECT list is not in GROUP BY clause and contains 
nonaggregated column 'programmers.B.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 A.FISH_TYPE만 있어서 B.FISH_NAME이 비집계 컬럼이 된다.
따라서 B.FISH_NAME을 가져올 수 없는 것이다.
이 문제를 GROUP BY B.FISH_TPYE, B.FISH_NAME으로 바꿔주며 해결하였다.
요즘 문제를 풀면서 느끼는 생각인데, 과연 실무에 들어갔을 때 내가 원하는 결과 값을 한번에 쿼리를 작성해서 도출할 수 있을까?? 라는 생각이 든다.
공부를 하면 할수록 부족함을 느끼고 그에 따라 불안감도 커져만 간다.
나를 믿고 하루하루 후회없이 살아보자 🔥

profile
데이터를 향해, 한 걸음씩 천천히.

0개의 댓글