1. 문제 풀이 아이디어
- 대여 불가능한 차량을 제외하고, 세단 또는 SUV 차량 중 30일 이상 대여 시 할인 요금을 계산한 후 요금 조건을 만족하는 차량을 정렬하여 조회하여 문제를 해결할 수 있다.
2. 나의 정답 코드
SELECT *
FROM (
SELECT
CAR_ID,
CAR_TYPE,
ROUND(DAILY_FEE * 30 * (100 - DISCOUNT_RATE) / 100) AS FEE
FROM
CAR_RENTAL_COMPANY_CAR
NATURAL JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN
WHERE
DURATION_TYPE = '30일 이상'
AND CAR_TYPE IN ('세단', 'SUV')
AND CAR_ID NOT IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE < '2022-11-30'
AND END_DATE > '2022-11-01'
)
) RESULT
WHERE
FEE >= 500000
AND FEE < 2000000
ORDER BY
FEE DESC,
CAR_TYPE ASC,
CAR_ID DESC;
3. 정리
CAR_RENTAL_COMPANY_DISCOUNT_PLAN
테이블에서DURATION_TYPE
이'30일 이상'
인 조건을 사용하여 30일 기준 할인 요금을 계산한다.
CAR_TYPE
이'세단'
또는'SUV'
인 차량만 조회 대상이 된다.
- 서브쿼리를 통해
2022-11-01
부터2022-11-30
사이에 이미 대여 중인 차량을NOT IN
으로 제외한다.
- 계산된 요금이
500000 이상
,2000000 미만
인 경우만 필터링한다.
- 결과는
FEE DESC
,CAR_TYPE ASC
,CAR_ID DESC
순으로 정렬하여 출력한다.
Share article