https://school.programmers.co.kr/learn/courses/30/lessons/293257
[문제]
FISH_NAME_INFO에서 물고기의 종류 별 물고기의 이름과 잡은 수를 출력하는 SQL문을 작성해주세요.
물고기의 이름 컬럼명은 FISH_NAME, 잡은 수 컬럼명은 FISH_COUNT로 해주세요.
결과는 잡은 수 기준으로 내림차순 정렬해주세요.
[나의 풀이]
SELECT COUNT(*) FISH_COUNT, FISH_NAME
FROM FISH_INFO I JOIN FISH_NAME_INFO N
ON I.FISH_TYPE = N.FISH_TYPE
GROUP BY FISH_NAME
ORDER BY 1 DESC;
(틀린 풀이)
SELECT COUNT(*) FISH_COUNT, FISH_NAME
FROM FISH_INFO I JOIN FISH_NAME_INFO N
ON I.FISH_TYPE = N.FISH_TYPE
GROUP BY I.FISH_TYPE
ORDER BY 1 DESC;
처음에 이렇게 풀었는데
실패 (1055, "Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'programmers.N.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절에서 지정되지 않은 열이 SELECT절에 있을때, 비집계열이 포함되지 않도록 한다
[다른 풀이]
SELECT COUNT(*) AS FISH_COUNT, N.FISH_NAME
FROM FISH_INFO I
JOIN FISH_NAME_INFO N ON I.FISH_TYPE = N.FISH_TYPE
GROUP BY I.FISH_TYPE, N.FISH_NAME
ORDER BY FISH_COUNT DESC;
이렇게 할 경우 느려진다고 한다.
-참고
https://passionfruit200.tistory.com/1089
"항상 기억해야할점은, GROUP BY 절을 사용한다면 SELECT절에는 집계함수나, GROUP BY 절에 포함된 필드 및 컬럼만 출력할 수 있습니다."
'프로그래머스 > My SQL' 카테고리의 다른 글
월별 잡은 물고기 수 구하기 (0) | 2024.11.19 |
---|---|
특정 물고기를 잡은 총 수 구하기 (0) | 2024.11.16 |
노선별 평균 역 사이 거리 조회하기 (0) | 2024.11.13 |
연도 별 평균 미세먼지 농도 조회하기 (0) | 2024.11.13 |
💫조건에 맞는 사원 정보 조회하기 (0) | 2024.11.11 |