참고: https://school.programmers.co.kr/learn/courses/30/lessons/59411
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
다음과 같이 주어진 예시를 확인해보면 OUTS 테이블에서 INS 테이블을
뺀 시간의 길이가 가장 긴 즉, 입양을 보내기까지의 보호 기간이 가장 긴 동물
두 마리의 아이디와 이름을 조회하면 된다.
SELECT ANIMAL_ID, NAME
FROM (
SELECT B.ANIMAL_ID, B.NAME, DATEDIFF(B.DATETIME, A.DATETIME) as DATE
FROM ANIMAL_INS A
JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY DATE DESC
LIMIT 2) as NEW_ANIMAL
테이블을 조회하는데, INS와 OUTS를 조인한 다음에 날짜의 차이를 DATE로
새로운 컬럼을 만들어 상위 2개의 데이터를 뽑아 NEW_ANIMAL이라는 새로운
테이블로 반환해준 다음에 조회해주었다.
다른 분의 코드를 살펴보았는데,
WHERE B.DATETIME IS NOT NULL
ORDER BY DATEDIFF(B.DATETIME, A.DATETIME)
LIMIT 2
ORDER BY에 바로 DATEDIFF 순으로 정렬한 것의
상위 2개의 데이터를 뽑는 것을 보고 아직 갈 길이 멀었다는 생각이 들었다..
화이팅 💪
'알고리즘(algo) > SQL' 카테고리의 다른 글
[SQL] 취소되지 않은 진료 예약 조회하기 (0) | 2023.02.20 |
---|---|
[SQL] 조건별로 분류하여 주문상태 출력하기 (0) | 2023.02.18 |
[SQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.02.17 |
[SQL] 입양 시각 구하기(2) (0) | 2023.02.15 |
[SQL] 진료과별 총 예약 횟수 출력하기 (0) | 2023.02.14 |