💡 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
테이블 형태
테이블 / 출력 결과 예시
풀이
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
, CASEWHEN DATEDIFF(END_DATE,START_DATE) +1>=30THEN "장기 대여"
ELSE "단기 대여" ENDAS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN'2022-09-01'AND'2022-09-30'ORDERBY HISTORY_ID DESC
해설
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN'2022-09-01'AND'2022-09-30'
대여 기간에 따라 장기대여/단기대여로 구분하여 컬럼을 생성하는 것이 핵심이다
먼저 WHERE문에 BETWEEN AND를 사용해 대여 시작일이 22년 9월 1일과 9월 30일에 포함되는 데이터를 필터링한다
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
, CASEWHEN DATEDIFF(END_DATE,START_DATE) +1>=30THEN "장기 대여"
ELSE "단기 대여" ENDAS RENT_TYPE
SELECT문에 출력 컬럼을 지정한다
START_DATE 와 END_DATE 는 DATE타입이어서 시:분:초까지 출력되므로 DATE_FORMAT을 활용해 ‘4자리 연도-두자리 월-두 자리 일(YYYY-mm-dd)’의 포맷을 지정한다CASE문을 사용해 총 대여일(=대여 종료일 - 대여 시작일 +1)이 30보다 크거나 같을 경우 '장기 대여'로, 그 외의 경우 '단기 대여'의 값을 부여하는 RENT_TYPE 컬럼을 생성한다. 이때 DATETIFF 는 (END DATE, START DATE) 순서를 지켜줘야 한다