본문 바로가기

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

SQL 고득점 kit(String, Date) - 오랜 기간 보호한 동물(2)

프로그래머스 문제

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는 굳이 쓸 필요 없다.