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

2176 단어 알고리즘sqlsql

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

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

풀이방법
ANIMAL_INS와 ANIMAL_OUTS 테이블에서 ANIMAL_ID가 같은 동물의
DATEDIFF(A.DATETIME, B.DATETIME)
을 구해 내림차순으로 정렬한 후 2개만 출력한다.

DATEDIFF
여기서 DATEDIFF를 처음 사용해봤는데 원래는
SELECT DATEDIFF(날짜형식, 시작날짜, 종료날짜) 이러한 형식으로 사용한다.
하지만 위와같은 방식으로 하면 해당문제에서는 에러가 발생했다고 나와서
SELECT DATEDIFF(시작날짜, 종료날짜) 이렇게 사용하였다.
(이유를 알게된다면 수정해서 올리겠음)

-- 코드를 입력하세요
SELECT DISTINCT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY DATEDIFF(A.DATETIME, B.DATETIME) ASC // 첫번째 인자에서 두번째 인자값을 빼서 음수가 되기때문에 ASC로 했음
//ORDER BY DATEDIFF(B.DATETIME, A.DATETIME) DESC
LIMIT 2;

좋은 웹페이지 즐겨찾기