[프로그래머스]물고기 종류 별 대어 찾기

김준석·2024년 4월 5일

코딩테스트 - SQL

목록 보기
81/96

문제

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

0개의 댓글