[코딩테스트] 프로그래머스 - 자동차 대여 기록 별 대여 금액 구하기 (Mysql)

jdev·2024년 7월 17일
0

Coding-Test

목록 보기
29/29

⚽ 설명문

레벨: 4
언어: Mysql

🧦 느낀점

해당 문제는 날짜값을 정확하게 구하면 풀 수 있는 문제라고 생각합니다
1. 대여 종료일과 시작일의 차이를 구하고
2. CAR_RENTAL_COMPANY_DISCOUNT_PLAN 해당 테이블과 조인을 하고
3. 금액과 대여차이일자와 할인율을 곱해서 금액을 구합니다

🥈 내가 작성한 코드

SELECT AA.HISTORY_ID
    , ROUND(AA.DIFFDATE * AA.DAILY_FEE * ((100 - IFNULL(BB.DISCOUNT_RATE, 0)) / 100), 0) AS FEE
  FROM (SELECT A.* 
            , B.HISTORY_ID
            , DATEDIFF(B.END_DATE, B.START_DATE) + 1 AS DIFFDATE
            , CASE WHEN DATEDIFF(B.END_DATE, B.START_DATE) + 1 >= 90 THEN '90일 이상'
                WHEN DATEDIFF(B.END_DATE, B.START_DATE) + 1 >= 30 THEN '30일 이상'
                WHEN DATEDIFF(B.END_DATE, B.START_DATE) + 1 >= 7 THEN '7일 이상'
                 END DURATION_TYPE
          FROM CAR_RENTAL_COMPANY_CAR A
          JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B
            ON (A.CAR_ID = B.CAR_ID)
         WHERE A.CAR_TYPE = '트럭') AA
  LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN BB
    ON (AA.CAR_TYPE = BB.CAR_TYPE AND AA.DURATION_TYPE = BB.DURATION_TYPE)
 ORDER BY FEE DESC, HISTORY_ID DESC

0개의 댓글