[SQL 문제 풀기] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기(157339)

lhs's avatar
Apr 07, 2025
[SQL 문제 풀기] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기(157339)
 

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

LHS's Study Space