상세 컨텐츠

본문 제목

[오늘의 코드 42] [프로그래머스] 물고기 종류 별 대어 찾기

코드 공부

by eun_00 2024. 5. 6. 14:08

본문

https://school.programmers.co.kr/learn/courses/30/lessons/293261

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[ 문제 ]

물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요.

물고기의 ID 컬럼명은 ID, 이름 컬럼명은 FISH_NAME, 길이 컬럼명은 LENGTH로 해주세요.
결과는 물고기의 ID에 대해 오름차순 정렬해주세요.
단, 물고기 종류별 가장 큰 물고기는 1마리만 있으며 10cm 이하의 물고기가 가장 큰 경우는 없습니다.

[ 정답 ]

# FISH_TYPE을 키로 이너 조인하기
# WHERE 절 서브쿼리로 FISH_TYPE 별, LENGTH 가 가장 큰 행만 추출
SELECT FII.ID AS ID, FNI.FISH_NAME AS FISH_NAME, FII.LENGTH AS LENGTH
FROM FISH_INFO AS FII
    INNER JOIN FISH_NAME_INFO AS FNI
     ON FII.FISH_TYPE = FNI.FISH_TYPE 
WHERE (FNI.FISH_TYPE, LENGTH) IN (SELECT FISH_TYPE, MAX(LENGTH)
                                      FROM FISH_INFO 
                                      GROUP BY FISH_TYPE)
ORDER BY FII.ID ASC;

 

💡 알게된 것 

- where 절 다중열 서브쿼리 사용하여, FISH_TYPE, LENGTH  컬럼에서 FISH_TYPE별 LENGTH  가 가장 큰 행만 추출.

- 다중행 서브쿼리 : 서브쿼리 결과가 여러 행으로 나올 때 (컬럼은 각 하나에서)

                                IN, ANY, ALL 사용 

- 다중컬럼 서브쿼리: 서브쿼리 결과가 여러 컬럼으로 나올 때

관련글 더보기