https://school.programmers.co.kr/learn/courses/30/lessons/151138
간단하게 푼 방법입니다.
DATEDIFF을 이용해서 대여 종료일에서 대여 시작일을 빼줍니다. 그리고 1일을 더해줘야하는데요.CASE문을 이용해서 rent_type 컬럼을 만들어줍니다.
WHERE절에서 대여 시작일이 2022년 9월인 데이터를 불러옵니다.
history_id 기준으로 내림 차순해주면 정답입니다.
SELECT history_id, car_id,
date_format(start_date,'%Y-%m-%d') start_date,
date_format(end_date,'%Y-%m-%d') end_date,
CASE WHEN DATEDIFF(end_date,start_date)+1 >= 30 THEN '장기 대여'
ELSE '단기 대여' END rent_type
FROM car_rental_company_rental_history
WHERE date_format(start_date,'%y-%m') = '22-09'
ORDER BY history_id DESC
with을 이용해서 푼 문제 뭔가 더 복잡한 느낌....?
with A AS (SELECT history_id, car_id,
date_format(start_date,'%Y-%m-%d')
,start_date,date_format(end_date,'%Y-%m-%d') end_date
FROM car_rental_company_rental_history
WHERE date_format(start_date,'%Y-%m-%d')
BETWEEN '2022-09-01' AND '2022-09-31')
SELECT history_id, car_id, start_date, end_date ,
CASE WHEN DATEDIFF(end_date,start_date)+1 >= 30 THEN '장기 대여' ELSE '단기 대여' END rent_type
FROM A
ORDER BY history_id DESC