본문 바로가기
Coding Test/SQL Coding Test

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

by nam_ji 2024. 1. 31.

오랜 기간 보호한 동물 (2)

문제

  • 동물 보호소에 있는 동물의 정보가 담긴 animal_ins 테이블과 입양된 동물 정보가 담긴 animal_outs 테이블이 있습니다.
  • 입양을 간 동물 중에서
    1. 보호기간이 가장 긴 동물
    2. 두 마리의
    3. 아이디와 이름을
    4. 보호기간이 긴 순으로 출력하는 문제입니다.


프로그래머스 코드

  • 우선 조회할 아이디와 이름 컬럼을 SELECT문 뒤에 작성합니다.
  • 조회할 컬럼이 담긴 테이블을 작성하는데 입양기간과 보호 시작일이 필요하기 때문에
  • FROM 뒤에 animal_ins 테이블을 작성하고
  • animal_outs를 JOIN 합니다.
  • 이 두 테이블을 연결해줄 컬럼을 비교하기 위해
  • ON 뒤에 각 공통인 컬럼(외래키)을 비교해줍니다.
  • 보호기간이 가장 오래되면서 내림차순 정렬을 위해
  • ORDER BY를 이용하여 정렬하게 하고 DATEDIFF 함수를 이용하여 입양일에서 보호 시작일을 뺀 값을 DESC를 이용해 내림차순 정렬했습니다.
    • DATEDIFF (날짜1, 날짜2) = 날짜1 - 날짜2
  • 두 마리만 출력하기 위해 LIMIT 2를 했습니다.
-- 코드를 입력하세요
SELECT
    ai.animal_id,
    ai.name
FROM animal_ins ai
JOIN animal_outs ao
ON ai.animal_id = ao.animal_id
ORDER BY DATEDIFF (ao.datetime, ai.datetime) DESC
LIMIT 2;