[MYSQL] 자동차 대여 기록 별 대여 금액 구하기

xianxbabx·2023년 1월 20일
0

MYSQL

목록 보기
5/8

문제 설명


문제

예시



주의사항

풀이

테이블 3개를 엮어서 풀어야 하기 때문에 꽤 복잡할 것이라고 예상했다. 첫 번째 테이블과 두 번째 테이블을 CAR_ID로 JOIN한 다음, 첫 번째 테이블과 세 번째 테이블의 CAR_TYPE으로 JOIN했다. START_DATE와 END_DATE를 DATEDIFF 함수를 이용하여 대여일을 구한 다음, 대여일에 따라 할인율이 달라지기 때문에 JOIN 하여 풀어주었다. 여기서 알게된 새로운 함수가 있다.

COALSCE 함수
COALSCE(A, B) : A의 값에서 B를 제외하고 다음 값부터 표시

즉, COALESCE(DISCOUNT_RATE, 0)은 0 값은 제외하고 나오기 때문에 이렇게 설정하였다.
JOIN 함수는 계속 공부해도 어려운 것 같다. 계속 연습해야지 !

나의 코드

SELECT HISTORY_ID, 
       ROUND(DAILY_FEE * (1 - (COALESCE(DISCOUNT_RATE,0)/100)) * (DATEDIFF(END_DATE, START_DATE) + 1)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR AS CAR 
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS HIS ON CAR.CAR_ID = HIS.CAR_ID
LEFT OUTER JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS PLAN ON CAR.CAR_TYPE = PLAN.CAR_TYPE AND
DURATION_TYPE = 
    CASE
        WHEN DATEDIFF(END_DATE, START_DATE) + 1 BETWEEN 7 AND 30 THEN '7일 이상'
        WHEN DATEDIFF(END_DATE, START_DATE) + 1 BETWEEN 30 AND 90 THEN '30일 이상'
        WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 90 THEN '90일 이상'
    END
WHERE CAR.CAR_TYPE = '트럭'  
ORDER BY FEE DESC, HISTORY_ID DESC;

0개의 댓글