최대 1 분 소요

문제 링크

정답

-- ANIMAL_INS: ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE
-- ANIMAL_OUTS: ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS AS I
WHERE NOT EXISTS (
    SELECT 1 
    FROM ANIMAL_OUTS AS O
    WHERE I.ANIMAL_ID = O.ANIMAL_ID
)
ORDER BY DATETIME
LIMIT 3;

✅ Point

  • I 에는 있고, O 에는 없는 정보 => NOT EXISTS 로 접근
  • 보호 기간이 긴 동물 = 보호 시작일이 빠른 동물
  • 입양을 가지 못한 동물이 3마리 이상인 경우만 입력으로 주어지므로, LIMIT 3으로 가장 오래 보호한 동물 3마리에 대한 row 추출
    • LIMIT 3최대 3개의 row를 가져온다는 의미. 해당 입력 조건이 보장되지 않더라도 동일한 기능 수행!