본문 바로가기

기타/문제풀이

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

반응형

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

 

 

출처: 프로그래머스

 

보호기간이 가장 긴 동물은
입양을 간 날짜에서 보호가 시작된 날짜를 빼면
그만큼 보호소에 있었던 기간이 된다.

 

내가 작성한 답:

SELECT I.ANIMAL_ID, I.NAME 
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY O.DATETIME - I.DATETIME DESC
LIMIT 2;

 

다른 사람이 작성한 답:

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY B.DATETIME-A.DATETIME DESC
LIMIT 2

 

DATE 타입 끼리는 기본적인 연산이 가능하므로 
ORDER BY 절에서 보면 B.DATETIME-A.DATETIME을 한 뒤
그 값들을 내림차순으로 정렬하였다.
그렇게 되면 보호소에 가장 오래 있었던 동물이 맨 위로 오게 되고
두 마리만 출력하면 되므로 LIMIT 2 이렇게 마지막에 작성하였다.

반응형