코딩테스트/SQL

[MySQL] - 오랜 기간 보호한 동물(2)

rlatotquf45 2024. 10. 18. 21:46
728x90
반응형

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

문제 요약

주어진 문제는 동물 보호소에서 입양된 동물들 중에서 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 문제입니다. 보호 기간은 동물이 보호소에 들어온 날짜(ANIMAL_INS의 DATETIME)와 입양된 날짜(ANIMAL_OUTS의 DATETIME) 간의 차이로 계산됩니다. 보호 기간이 긴 순으로 결과를 정렬하여 상위 두 마리의 동물 정보를 조회해야 합니다.

풀이 방법

  1. 테이블 조인: ANIMAL_INS와 ANIMAL_OUTS 테이블을 ANIMAL_ID를 기준으로 조인합니다. 이렇게 해야 보호 시작일과 입양일을 함께 사용할 수 있습니다.
  2. 보호 기간 계산: 두 테이블의 DATETIME 컬럼을 이용해 DATEDIFF 함수를 사용하여 보호 기간을 계산합니다. DATEDIFF 함수는 두 날짜의 차이를 계산하여 보호 기간을 일수로 반환해줍니다.
  3. 정렬: 보호 기간을 기준으로 내림차순 정렬하여 보호 기간이 긴 동물들을 상위에 위치시킵니다.
  4. 상위 두 개 결과만 출력: LIMIT 2를 사용하여 상위 두 마리의 동물 정보를 가져옵니다.

정답 코드

-- 코드를 입력하세요
SELECT i.animal_id, i.name
from ANIMAL_INS as i
join animal_outs as o
on i.animal_id = o.animal_id
order by datediff(o.datetime, i.datetime) desc
limit 2

새롭게 배운 내용

DATEDIFF 함수

  • DATEDIFF 함수는 SQL에서 두 날짜 간의 차이를 일 단위로 계산해주는 함수입니다. 이 함수는 주로 날짜 차이를 구할 때 사용되며, 첫 번째 인자로 종료 날짜, 두 번째 인자로 시작 날짜를 받습니다.
  • 이번 문제에서는 DATEDIFF(OUT_DATETIME, IN_DATETIME)을 사용하여 동물이 보호소에 있던 기간을 계산합니다.
728x90
반응형