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

1 분 소요

문제

출처

이해

입력

  • ANIMAL_INS
    • 타입: 테이블
    • 의미: 동물 보호소에 들어온 동물의 정보
    • 스키마:

      NAME TYPE NULLABLE
      ANIMAL_ID VARCHAR(N) FALSE
      ANIMAL_TYPE VARCHAR(N) FALSE
      DATETIME DATETIME FALSE
      INTAKE_CONDITION VARCHAR(N) FALSE
      NAME VARCHAR(N) TRUE
      SEX_UPON_INTAKE VARCHAR(N) FALSE
  • ANIMAL_OUTS
    • 타입: 테이블
    • 의미: 동물 보호소에서 입양 보낸 동물의 정보
    • 스키마:

      NAME TYPE NULLABLE
      ANIMAL_ID VARCHAR(N) FALSE
      ANIMAL_TYPE VARCHAR(N) FALSE
      DATETIME DATETIME FALSE
      NAME VARCHAR(N) TRUE
      SEX_UPON_INTAKE VARCHAR(N) FALSE

출력

  • 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회

조건

  1. 보호 기간이 긴 순으로 조회한다.

예시

입력

ANIMAL_INS

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A354597 Cat 2014-05-02 12:16:00 Normal Ariel Spayed Female
A362707 Dog 2016-01-27 12:27:00 Sick Girly Girl Spayed Female
A370507 Cat 2014-10-27 14:43:00 Normal Emily Spayed Female
A414513 Dog 2016-06-07 09:17:00 Normal Rocky Neutered Male

ANIMAl_OUTS

ANIMAL_ID ANIMAL_TYPE DATETIME NAME SEX_UPON_OUTCOME
A354597 Cat 2014-06-03 12:30:00 Ariel Spayed Female
A362707 Dog 2017-01-10 10:44:00 Girly Girl Spayed Female
A370507 Cat 2015-08-15 09:24:00 Emily Spayed Female

출력

ANIMAL_ID NAME
A362707 Girly Girl
A370507 Emily

접근

  1. 입양을 간 동물 중에서 조회해야 하므로 ANIMAL_INS와 ANIMAL_OUTS의 JOIN을 구한다.
  2. 보호 기간이 긴 순으로 조회하기 위해서 보호 시작일과 입양일의 차이로 정렬한다.
  3. 보호 기간이 가장 긴 두 마리를 선택한다.

구현

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A JOIN ANIMAL_OUTS B USING(ANIMAL_ID)
ORDER BY TIMESTAMPDIFF(DAY, A.DATETIME, B.DATETIME) DESC
LIMIT 2

댓글남기기