자동차 대여 기록에서 장기/단기 대여 구분하기

는는·2023년 3월 27일
0

SQL - 문제 풀이

목록 보기
51/77

자동차 대여 기록에서 장기/단기 대여 구분하기

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

0개의 댓글