https://school.programmers.co.kr/learn/courses/30/lessons/59411
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드설명
INNER JOIN + DATEDIFF 를 활용합니다.
문제에서 유의해야할점은, DATEDIFF는 시간별 차이는 나타내지 않고 날짜만 나타냅니다.
그렇기에 AO.DATETIME - AI.DATETIME 또한 정확한 날짜를 변환하지는 않지만 문자열로 계산되며 가장 큰 차이가 무엇인지는 구할 수 있으므로 AO.DATETIME - AI.DATETIME을 사용하는 것이 더 적합할 것 입니다.
코드
SELECT AI.ANIMAL_ID, AI.NAME
FROM ANIMAL_INS AS AI
INNER JOIN ANIMAL_OUTS AS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
ORDER BY (AO.DATETIME - AI.DATETIME) DESC
# ORDER BY DATEDIFF(AO.DATETIME, AI.DATETIME) DESC
LIMIT 2
ORACLE
SELECT ANIMAL_ID, NAME
FROM ( SELECT AI.ANIMAL_ID AS ANIMAL_ID, AI.NAME AS NAME
FROM ANIMAL_INS AI
INNER JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
ORDER BY AO.DATETIME - AI.DATETIME DESC
)
WHERE ROWNUM <= 2