링크를 클릭하면 해당 문제로 이동합니다.
1. 접근하기
문제에서 필요한 데이터는 보호 기간인데 보호 기간은 입양일과 보호시작일 간의 차이를 구해주면 되겠다고 생각했다.
보호 기간을 기준으로 내림차순 정렬하고 LIMIT 2 를 사용하면 되겠다.
MYSQL에서 두 날짜간의 차이를 구하려면 DATEDIFF(날짜1, 날짜2)를 사용하면 된다.
2. 풀이
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC LIMIT 2;
보호 시작일과 입양일 데이터가 필요하므로, 두 테이블간 Inner Join을 해주었다.
DATEDIFF 함수는 처음 사용해보는데 기억해두면 앞으로 쓸 일이 많을 거 같다.
# 번외 - TIMESTAMPDIFF()
DATEDIFF 함수는 두 날짜간의 차이를 일(Day)수로 반환해주는데
년, 분기, 월, 주, 일, 시, 분, 초로 반환하고 싶을 때는 TIMESTAMPDIFF 함수를 이용하면 된다.
사용법은 TIMESTAMPDIFF(지정 반환 타입, '날짜1', '날짜2') 이다.
ㆍ 지정 반환 타입
년 - YEAR
분기 - QUARTER
월 - MONTH
주 - WEEK
일 - DAY
시 - HOUR
분 - MINUTE
초 - SECOND
- 두 날짜간의 차이를 년(Year)으로 반환
SELECT TIMESTAMPDIFF(YEAR, '2022-01-08', '2023-01-08')
Result : 1
- 두 날짜간의 차이를 분기(Quarter)로 변환
SELECT TIMESTAMPDIFF(QUARTER, '2022-01-08', '2023-01-08')
Result : 1
- 두 날짜간의 차이를 월(Month)로 변환
SELECT TIMESTAMPDIFF(MONTH, '2022-01-08', '2023-01-08')
Result : 12
- 두 날짜간의 차이를 주(Week)로 변환
SELECT TIMESTAMPDIFF(WEEK, '2022-01-08', '2023-01-08')
Result : 52
'데이터베이스 > MYSQL' 카테고리의 다른 글
[MYSQL] 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2023.01.08 |
---|---|
[MYSQL] 우유와 요거트가 담긴 장바구니 (0) | 2023.01.08 |
[MYSQL] 가격대 별 상품 개수 구하기 (1) | 2023.01.07 |
[MYSQL] 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2023.01.07 |
[MYSQL] 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.01.05 |
댓글