SQL Coding Test/[Programmers]

[Programmers] 오랜 기간 보호한 동물(2) (Lv.3)

duswn1204 2026. 5. 26. 20:55

🔗 문제 link : https://school.programmers.co.kr/learn/courses/30/lessons/59411

🖥️ 문제 풀이

SELECT
    I.ANIMAL_ID,
    I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
LIMIT 2;

💡 문제 해결

놓친 부분

1. LEFT JOIN + IS NOT NULL → INNER JOIN

입양 간 동물만 필요하다면

LEFT JOIN ... 
WHERE O.ANIMAL_ID IS NOT NULL
 

보다

JOIN ...
 

이 더 간단하고 같은 결과가 나옴


❌ 잘못 생각한 방향

HAVING DATEDIFF(...)
 

⭕ 맞는 방향

ORDER BY DATEDIFF(...) DESC
LIMIT 2
 

→ 보호 기간이 긴 순으로 정렬 후 상위 2개 추출