https://school.programmers.co.kr/learn/courses/30/lessons/293261
포인트!
1. 물고기 종류 별로 가장 큰 물고기 출력
2. sql_mode=only_full_group_by 모드라서 GROUP BY를 사용할꺼면...잘 사용해야 됨.
WITH TYPE_NAME AS(
SELECT
ID, I.FISH_TYPE, FISH_NAME, LENGTH,
RANK() OVER(PARTITION BY FISH_NAME ORDER BY LENGTH DESC) AS rnk
FROM
FISH_INFO I
INNER JOIN FISH_NAME_INFO N
ON I.FISH_TYPE=N.FISH_TYPE
)
SELECT
ID, FISH_NAME, LENGTH
FROM
TYPE_NAME
WHERE 1=1
AND rnk=1
ORDER BY
ID
아오.. 처음에 아래처럼 풀었는데 sql_mode=only_full_group_by 때문에 계속 오류남.....ㅠㅠㅠㅠ
ANY_VALUE()함수 쓰면 GROUP BY에 안넣어도 출력되게 할 수 있긴 한데 임의의 값을 출력해서 답도 아니고~~ 아무튼 RANK() 윈도우 함수로 해결!
#sql_mode=only_full_group_by 오류나는 문구
SELECT
ID, FISH_NAME, MAX(LENGTH) AS LENGTH
FROM
FISH_INFO I
INNER JOIN FISH_NAME_INFO N
ON I.FISH_TYPE=N.FISH_TYPE
GROUP BY
FISH_NAME
ORDER BY
ID