코딩테스트/SQL - 프로그래머스
SQL 고득점 kit(String, Date) - 오랜 기간 보호한 동물(2)
K_Wien
2024. 4. 7. 14:23
프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/59411
풀이
https://school.programmers.co.kr/questions/75013
-- 풀이 쿼리
-- 입양 간 동물 중 보호기간이 가장 길었던 동물 2마리의 아이디와 이름 조회
-- 보호기간 긴 순으로 조회
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY TIMESTAMPDIFF(MINUTE, I.DATETIME, O.DATETIME) DESC
LIMIT 2
- DATETIME이 분 단위이므로 DATEDIFF()보단 TIMESTAMPDIFF()를 사용해서 입양 기간을 분 단위로 구하는 게 더 정확할 것 같다.
- DATETIME이 분 단위이므로 입양 기간이 똑같은 동물들은 없을 것 같지만, 혹여나 있는 경우의 수도 고려하려면 쿼리를 좀 더 자세히 짜야 할 것 같다.
- 서브쿼리나 CTE는 굳이 쓸 필요 없다.