자동차 대여 기록에서 장기/단기 대여 구분하기.sql

Haks.·2025년 1월 2일
0

Study

목록 보기
35/65

문제 설명

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

Column name	 Type	 Nullable
HISTORY_ID	INTEGER	 FALSE
CAR_ID	    INTEGER	 FALSE
START_DATE	DATE	 FALSE
END_DATE	DATE	 FALSE

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

예시
예를 들어 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블이 다음과 같다면

HISTORY_ID	CAR_ID	START_DATE	END_DATE
1			4		2022-09-27	2022-11-27
2			3		2022-10-03	2022-11-04
3			2		2022-09-05	2022-09-05
4			1		2022-09-01	2022-09-30
5			3		2022-09-16	2022-10-15

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

HISTORY_ID	CAR_ID	START_DATE	END_DATE	RENT_TYPE
5			3		2022-09-16	2022-10-13	단기 대여
4			1		2022-09-01	2022-09-30	장기 대여
3			2		2022-09-05	2022-09-05	단기 대여
1			4		2022-09-27	2022-10-26	장기 대여

풀이

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) < 29 THEN '단기 대여'
ELSE '장기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;

sql 에서 데이터 형식이 날짜면 기본적으로 그값을 뺏을때 자체적으로 바꿔서 계산해준다.
그러나 명시적으로 DATEDIFF 를 쓰면 날짜를 뻇다는것을 보여줄 수 있다.

END_DATE - START_DATE 이렇게 적어도 가능

0개의 댓글

관련 채용 정보