SQL문제풀이(14)

냐옹·2023년 10월 5일
0

SQL

목록 보기
14/18

https://school.programmers.co.kr/learn/courses/30/lessons/151138

1차 (틀, 왜지..?)

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) >= 30 THEN '장기 대여'
    ELSE '단기 대여' END
    AS RENT_TYPE
FROM 
    car_rental_company_rental_history
WHERE 
    start_date like '2022-09%'
ORDER BY
history_id desc;

2차 (틀, 날짜를 문자열로 체크해서 그런가? 해서 고쳐봤는데 틀)

-- 코드를 입력하세요
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) >= 30 THEN '장기 대여'
    ELSE '단기 대여' END
    AS RENT_TYPE
FROM 
    car_rental_company_rental_history
WHERE 
    start_date BETWEEN '2022-09-01' and '2022-09-30' 
ORDER BY
history_id desc;

3차 맞음 ( 아 예전에 했던 실수 또했다 )

-- 코드를 입력하세요
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)+1) >= 30 THEN '장기 대여'
    ELSE '단기 대여' END
    AS RENT_TYPE
FROM 
    car_rental_company_rental_history
WHERE 
    start_date BETWEEN '2022-09-01' and '2022-09-30' 
ORDER BY
history_id desc;

문풀

바로 이 부분이 문제였다. 이전에 했던 실수인데 하..
WHEN (DATEDIFF(end_date, start_date)+1) >= 30 THEN '장기 대여'
저기 +1 보이나? 저거 때문이다.

예를 들어서 그런 이야기다.
내가 22년 9월 1일에 빌려서 그날 반납하면 대여기간을 0일로 처리하면 안되고 1일로 처리해야한다. 그런데 나는 0일로 처리했던거.. 그래서 +1을 해줘야 한다. 그걸로 계산해야하고..! 제발 실수말자

0개의 댓글