코딩테스트/프로그래머스

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

imachill7guy 2025. 3. 18. 17:31

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제


풀이

SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I INNER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY O.DATETIME - I.DATETIME DESC
LIMIT 2;
  • 입양간 동물중 보호기간이 오래된 동물을 찾는 것이므로 inner join을 수행했다
  • fk가 동물id이니 id로 묶어줬다
  • 입양간 동물 날짜 - 보호소들어온 날짜값을 내림차순 정렬하고
  • 2마리 출력이니 limit 2를 수행해줬다
  • 그런데 DATEDIFF를 써도 된다고 한다.

다른 사람 코드 참고

SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM ANIMAL_INS, ANIMAL_OUTS
WHERE ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
ORDER BY DATEDIFF(ANIMAL_OUTS.DATETIME, ANIMAL_INS.DATETIME) DESC
LIMIT 2

이런식으로