DB

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

연듀 2023. 2. 22. 21:49

https://school.programmers.co.kr/learn/courses/30/lessons/157339

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT CAR.CAR_ID, CAR.CAR_TYPE, ROUND(CAR.DAILY_FEE * (1- 0.01 * DISCOUNT_RATE) * 30) AS FEE
FROM CAR_RENTAL_COMPANY_CAR CAR
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN PLAN
ON CAR.CAR_TYPE = PLAN.CAR_TYPE
WHERE
CAR.CAR_ID NOT IN(
    SELECT CAR_ID
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    WHERE END_DATE >= '2022-11-01' AND START_DATE <='2022-11-30'
    # 11월달에 대여되고 있는 CAR_ID는 제외
)
AND CAR.CAR_TYPE IN ('세단', 'SUV')
AND PLAN.DURATION_TYPE = '30일 이상'
GROUP BY CAR.CAR_ID
HAVING FEE BETWEEN 500000 AND 1990000
ORDER BY 3 DESC, 2, 1 DESC

 

11월 1일부터 11월 30일까지 대여를 하려면, 11월달에 어느 순간이라도 이미 대여가 되고 있는 차들을 제외시켜야 한다. 이게 어려웠다. 

그런차들은 대여 시작일이 2022-11-30보다 같거나 빠르고 대여 종료일이 2022-11-01보다 같거나 큰 차들이다.