알고리즘
[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문의 조건으로 포함했는데, 이는 문제에 주어진 기간 동안 대여가 가능한 차량을 필터링 하기 위함입니다.