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

yannie·2024년 8월 31일

[문제]

입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.

  • ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블
  • ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블

[풀이]

SELECT AO.ANIMAL_ID, AO.NAME
FROM ANIMAL_OUTS AO
INNER JOIN ANIMAL_INS AI
ON AO.ANIMAL_ID = AI.ANIMAL_ID
ORDER BY DATEDIFF(AO.DATETIME, AI.DATETIME) DESC
LIMIT 2
;

[코드리뷰]

  1. 입양을 간 동물 중
    • 입양 보낸 동물의 정보를 담은 테이블인 ANIMAL_OUTS를 기준
  2. 보호 기간이 가장 길었던 동물
    • 보호 기간이 가장 길었던 동물을 알기 위해서는 보호를 시작한 날을 알아야 하기 때문에 ANIMAL_ID를 기준으로 ANIMAL_INS 테이블과 JOIN
      -> INNER JOIN ANIMAL_INS AI ON AO.ANIMAL_ID = AI.ANIMAL_ID
  3. 보호기간이 길었던 동물 2마리
    • 입양일 - 보호시작일 -> 보호기간을 알 수 있음
    • 입양일과 보호시작일 데이터 타입은 DATE이기 때문에 DATEDIFF함수를 통해 날짜 연산을 함
      -> DATEDIFF(AO.DATETIME, AI.DATETIME)
    • 반드시 순서를 지킬것.
    • 가장 길었던 2마리이기 때문에 DESC로 정렬
    • LIMIT 2로 제한

0개의 댓글