Algorithm/Programmers SQL

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

제우제우 2024. 9. 16. 20:05

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코딩테스트 연습 > String, Date > 오랜 기간 보호한 동물(2)

 

문제 분석

난이도: LEVEL3

 

문제 요구사항

입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 

이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.

정답 코드

SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC -- DATEDIFF(종료일, 시작일)
LIMIT 2

 

 

보호 기간이 가장 길었던 동물을 구할려면 보호 시작 기간과 보호 종료 기간(입양 날짜)의 정보가 필요하다. 

보호 시작 기간은 AINAM_INS 입양 날짜는 ANIMAL_OUTS 테이블에 있다. 두 테이블을 ANIMAL_ID를 기준으로 조인한다.

 

날짜 계산을 해야 하는데 날짜 계산 함수를 활용한다. DATEDIFF(종료일, 시작일) 

해당 보호 기간을 기준으로 내림차순 정렬을 하고 LIMIT 2를 걸어주면 가장 보호기간이 길었던 동물 정보가 2개 나온다.