문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/151138
SELECT HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE
WHEN DATEDIFF(END_DATE, START_DATE) >= 29 THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
DATEDIFF() 함수는 해당 문제에서 구해야 하는
END_DATE와 START_DATE 사이의 일수를 구해준다. (24시간 기준이 아니라 날짜 기준임 !!!)
ㄴ> ex ) SELECT DATEDIFF('2024-10-22 00:00:00', '2024-10-23 18:00:00');
ㄴ> 결과 : 1
ㄴ> 시간으로 보면 하루(24시간) 차이가 아닌데 일수로 보면 1이 되는 것
대여일부터 1일차라 단순히 날짜 차이를 기준으로 하면 29일 이상부터 장기임
대여를 하고 같은 날 반납을 하는 경우는 대여기간을 1일로 친다.
ㄴ> 그래서 30일 이상을 확인하려면 조건을 >= 30에서 >= 29로 바꾸니까 맞음 !
320x100
'PRACTICE > SQL' 카테고리의 다른 글
[MySQL] 1단계 30. 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.12.07 |
---|---|
[MySQL] 1단계 29. 가장 큰 물고기 10마리 구하기 (0) | 2024.12.07 |
[MySQL] 1단계 27. 잡은 물고기의 평균 길이 구하기 (0) | 2024.12.05 |
[MySQL] 1단계 26. 한 해에 잡은 물고기 수 구하기 (0) | 2024.12.05 |
[MySQL] 1단계 25. 최댓값 구하기 (0) | 2024.12.04 |