알고리즘

[SQL]프로그래머스 Lv.4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

truezero 2023. 9. 26. 17:45

✅ 코드

SELECT C.CAR_ID AS CAR_ID
    , C.CAR_TYPE AS CAR_TYPE
    , FLOOR(C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE/100)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR AS C
   INNER JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS P ON C.CAR_TYPE = P.CAR_TYPE
                                            AND P.DURATION_TYPE = '30일 이상'
                                            AND C.CAR_TYPE IN ('세단', 'SUV')
   LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H ON C.CAR_ID = H.CAR_ID
                                            AND H.END_DATE >= '2022-11-01'
                                            AND H.START_DATE <= '2022-11-30'
WHERE ROUND(C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE/100)) BETWEEN 500000 AND 1999999
  AND H.CAR_ID IS NULL
ORDER BY FEE DESC
      , CAR_TYPE
      , CAR_ID DESC

테이블간 공유하는 컬럼을 기준으로 관계를 설정하고

단계적으로 INNER 조인과 LEFT JOIN을 수행했습니다.

H.CAR_ID 컬럼의 값이 NULL인 경우를 WHERE문의 조건으로 포함했는데, 이는 문제에 주어진 기간 동안 대여가 가능한 차량을 필터링 하기 위함입니다.