코드카타
[SQL]프로그래머스 Lv.1 자동차 대여 기록에서 장기/단기 대여 구분하기
PARK JI HO
2023. 12. 23. 17:00
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서
대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서
대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는
컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요.
결과는 대여 기록 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) >=29 THEN "장기 대여"
ELSE "단기 대여" END RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE,'%Y-%m') = '2022-09'
ORDER BY 1 DESC
1. DATEDIFF를 통해 대여 기간을 구해준다.
2. 30일 이상이면 장기대여 그 외에는 단기 대여로 주고 RENT_TYPE에 할당
3. WHERE로 2022년 9월에 속하는 것들만
30일 이상인데 왜 >= 29로 했느냐?
30으로 하니까 END_DATE - START_DATE 결과가 0이 나오는 행이 있었다.
그래서 보통 DATEDIFF(END_DATE,START_DATE) >=29 또는
DATEDIFF(END_DATE,START_DATE) + 1>=30을 해주더라