[프로그래머스 | SQL] 자동차 대여 기록에서 장기/단기 대여 구분하기

박기영·2024년 8월 2일
0

프로그래머스

목록 보기
156/159
post-custom-banner

solution

SELECT
    HISTORY_ID,
    CAR_ID,
    DATE_FORMAT(START_DATE, "%Y-%m-%d"),
    DATE_FORMAT(END_DATE, "%Y-%m-%d"),
    CASE
        WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30
            THEN "장기 대여"
        ELSE "단기 대여"
    END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE, "%Y-%m") = "2022-09"
ORDER BY HISTORY_ID DESC;

explanation

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서
START_DATE가 2022년 9월에 포함된 것들 중
필요한 데이터를 추출하며,
HISTORY_ID를 기준으로 내림차순 정렬한다.
만약, END_DATESTART_DATE의 차가 30일 이상이면 장기 대여,
그렇지 않다면 단기 대여REND_TYPE이라는 컬럼에 저장하여 반환한다.

DATEDIFF()의 경우 동일한 날짜에 해당하는 다른 시간대의 값들을 넣으면 0으로 처리되는데,
이는 렌트의 기준과 다르다.
렌트는 하루종일 빌린게 아니더라도 1일로 처리해야하기 때문에
+1을 해줘야 한다.

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글