문제. 프로그래머스 SQL > String,Date > 오랜 기간 보호한 동물(2)
문제 설명
입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
예시
예를 들어, ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블이 다음과 같다면
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 |
SQL문을 실행하면 다음과 같이 나와야 합니다.
ANIMAL_ID | NAME |
A362707 | Girly Girl |
A370507 | Emily |
※ 입양을 간 동물이 2마리 이상인 경우만 입력으로 주어집니다.
출처 : 프로그래머스 SQL > 오랜 기간 보호한 동물(2)
나의 풀이 in MySQL
#[Programmers] SQL > String,Date > 오랜 기간 보호한 동물(2)
SELECT B.ANIMAL_ID ANIMAL_ID, B.NAME AS NAME
FROM ANIMAL_INS A JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY DATEDIFF(A.DATETIME, B.DATETIME)
LIMIT 2
입양 간 동물 중 보호 기간이 가장 긴 두 마리를 조회해야 합니다.
먼저, ANIMAL_INS와 ANIMAL_OUTS를 JOIN해주며 테이블을 만들어줍니다.
ANIMAL_ID와 NAME은 ANIMAL_OUTS에서 SELECT하며 보호 기간이 긴 순으로 ORDER BY을 해줘야 하므로 여기서 DATEDIFF라는 함수를 사용해줍니다.
*DATEDIFF(A,B)는 DATETIME Type간의 차이를 나타내주는 함수로 종종 날짜 관련해서 사용됩니다.
마지막으로 두 마리를 조회해야 하므로 LIMIT 2를 추가해주며 문제를 마무리해주면 됩니다.
기본적인 SQL문을 안다면, 쉽게 풀 수 있는 문제였습니다.
반응형
'Tests > 프로그래머스' 카테고리의 다른 글
[Programmers] 2019 카카오 > 무지의 먹방 라이브 (0) | 2020.09.04 |
---|---|
[Programmers] 2019 카카오 > 후보키 (0) | 2020.09.03 |
[Programmers] SQL > JOIN > 오랜 기간 보호한 동물(1) (0) | 2020.08.27 |
[Programmers] SQL > GROUP BY > 동명 동물 수 찾기 (0) | 2020.08.26 |
[프로그래머스] SQL GROUP BY 입양 시각 구하기(2) (0) | 2020.08.24 |
댓글