본문 바로가기
Problem Solving/프로그래머스 SQL

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

by Libi 2021. 8. 11.
반응형

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

 

코딩테스트 연습 - 오랜 기간 보호한 동물(2)

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

[ 문제풀이 ]

두 테이블을 JOIN 하여 시간 차이가 큰 튜플을 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 O.DATETIME - I.DATETIME DESC
LIMIT 2;

다른 풀이를 살펴보니 timestampdiff라는 함수를 이용하면 두 시간의 차이를 구할 수 있다.

DATEDIFF(날짜1, 날짜2) : Day를 기준으로 두 날짜간의 차이를 구함
TIMESTAMPDIFF(단위, 날짜1, 날짜2) : 단위를 기준으로 두 날짜간의 차이를 구함
                                    ex) SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR 등

연산 순서는 두 함수 모두 날짜2 - 날짜1
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 TIMESTAMPDIFF(SECOND, I.DATETIME, O.DATETIME) DESC
LIMIT 2;

 

 

반응형

댓글