728x90
반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/59411문제 요약
주어진 문제는 동물 보호소에서 입양된 동물들 중에서 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 문제입니다. 보호 기간은 동물이 보호소에 들어온 날짜(ANIMAL_INS의 DATETIME)와 입양된 날짜(ANIMAL_OUTS의 DATETIME) 간의 차이로 계산됩니다. 보호 기간이 긴 순으로 결과를 정렬하여 상위 두 마리의 동물 정보를 조회해야 합니다.
풀이 방법
- 테이블 조인: ANIMAL_INS와 ANIMAL_OUTS 테이블을 ANIMAL_ID를 기준으로 조인합니다. 이렇게 해야 보호 시작일과 입양일을 함께 사용할 수 있습니다.
- 보호 기간 계산: 두 테이블의 DATETIME 컬럼을 이용해 DATEDIFF 함수를 사용하여 보호 기간을 계산합니다. DATEDIFF 함수는 두 날짜의 차이를 계산하여 보호 기간을 일수로 반환해줍니다.
- 정렬: 보호 기간을 기준으로 내림차순 정렬하여 보호 기간이 긴 동물들을 상위에 위치시킵니다.
- 상위 두 개 결과만 출력: LIMIT 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 datediff(o.datetime, i.datetime) desc
limit 2
새롭게 배운 내용
DATEDIFF 함수
- DATEDIFF 함수는 SQL에서 두 날짜 간의 차이를 일 단위로 계산해주는 함수입니다. 이 함수는 주로 날짜 차이를 구할 때 사용되며, 첫 번째 인자로 종료 날짜, 두 번째 인자로 시작 날짜를 받습니다.
- 이번 문제에서는 DATEDIFF(OUT_DATETIME, IN_DATETIME)을 사용하여 동물이 보호소에 있던 기간을 계산합니다.
728x90
반응형
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL] 카테고리 별 도서 판매량 집계하기 (1) | 2024.10.25 |
---|---|
[MySQL] - 있었는데요 없었습니다 (0) | 2024.10.25 |
[MySQL] - 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2024.10.18 |
[MySQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.10.12 |
[MySQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.10.09 |