다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
예를 들어 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블이 다음과 같다면

2022년 9월의 대여 기록 중 '장기 대여' 에 해당하는 기록은 대여 기록 ID가 1, 4인 기록이고, '단기 대여' 에 해당하는 기록은 대여 기록 ID가 3, 5 인 기록이므로 대여 기록 ID를 기준으로 내림차순 정렬하면 다음과 같이 나와야 합니다.

IF문과 CASE문에서 검증 시 30일이 아니라 29일로 체크해야 한다.
SELECT HISTORY_ID, CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS DATE_FORMAT,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS DATE_FORMAT,
IF(DATEDIFF(END_DATE, START_DATE) >= 29, '장기 대여', '단기 대여') 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 값을 구한다.
-- IF 문을 사용해 날짜 차가 29일 이상일 경우 '장기대여' 그 외의 경우 '단기 대여'를 출력한다.
SELECT HISTORY_ID
, CAR_ID
, TO_CHAR(START_DATE, 'YYYY-MM-DD') START_DATE
, TO_CHAR(END_DATE, 'YYYY-MM-DD') END_DATE
, CASE WHEN (END_DATE - START_DATE) >= 29 THEN '장기 대여'
ELSE '단기 대여'
END
RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'YYYY-MM') LIKE '2022-09%'
ORDER BY HISTORY_ID DESC
-- CASE WHEN 표현식을 사용해 두 날짜 차에 조건을 걸어 출력한다.
날짜의 경우 2022-09-01 ~ 2022-09-01 동안 대여했을 시 0일을 대여한 게 아니라 하루 대여 한 것으로 봐야한다. 때문에 2022-09-01 ~ 2022-09-30이면 날짜의 차는 29이지만 대여일은 30일로 볼 수 있다.
IF 문과 비슷한 기능을 하는 DECODE 함수가 있지만 부등호 조건을 사용할 수 없다. DECODE 함수를 대체할 수 있는 기능으로 CASE 표현식이있다.
