본문 바로가기
코딩테스트/SQL

[프로그래머스] JOIN 〉Lv3. 오랜 기간 보호한 동물(1)

by imsha 2021. 10. 23.
반응형

문제 설명

 


예시

 


풀이 방법

아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 문제입니다. 결과는 보호 시작일 순으로 조회해야 합니다.

우선 주어진 두 테이블을 활용하여 동물의 ID가 같은 것끼리 매치하여 JOIN을 합니다. WHERE조건으로 아직 입양을 못 간 동물을 추출하도록 하여 입양 테이블(ANIMAL_OUTS)의 동물 아이디가 NULL인 조건을 명시합니다. 가장 오래 보호소에 있었던 동물 3마리를 추출하기 위해 보호소에 들어온 동물 정보를 담은 테이블 ANIMAL_INS의 보호 시작일(DATETIME) 순으로 ORDER BY하여 정렬합니다. 다음으로 행단위로 상위 n개 행을 추출하는 LIMIT n;을 사용하여 보호 시작일이 가장 빠른 상위 3개 행의 데이터를 추출합니다. 이 때, SELECT절에서 ANIMAL_INS테이블에만 있는 데이터이므로 ANIMAL_INS의 이름(NAME)과 보호시작일(DATETIME)을 조회합니다.


문제 풀이

SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
    ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY INS.DATETIME
LIMIT 3;

 


실행 결과

반응형

댓글