본문 바로가기

PS/SQL

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

programmers.co.kr/learn/courses/30/lessons/59044

 

코딩테스트 연습 - 오랜 기간 보호한 동물(1)

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr


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

아직 입양을 못 간 동물을 조회해야 하므로, LEFT를 INS로 하고 OUTS을 조인한다.

INS에 이름이 있지만 OUTS에 이름이 없다면 아직 입양을 못 갔다는 뜻이다.

마지막으로 INS.DATETIME을 기준으로 오름차순 정렬하고 총 3개의 데이터만 출력하게 한다.


SELECT NAME, DATETIME
FROM ANIMAL_INS 
WHERE ANIMAL_ID NOT IN (
    SELECT ANIMAL_ID 
    FROM ANIMAL_OUTS    
)
ORDER BY DATETIME
LIMIT 3;

JOIN을 활용하지 않은 풀이도 충분히 가능하다.