13. 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/157339
#문제 : CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.
#조건 1 자동차 종류가 '세단' 또는 'SUV' #조건 2 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능 #조건 3 대여기간 30일 동안의 요금 계산 후 50만원 이상 200만원 미만 추출 select distinct a.CAR_ID, a.CAR_TYPE, round(a.daily_fee*30*(100-b.discount_rate)/100,0) FEE from CAR_RENTAL_COMPANY_CAR a join CAR_RENTAL_COMPANY_DISCOUNT_PLAN b on a.car_type = b.car_type where a.car_type in ('세단','SUV') and b.duration_type like '30%' and a.car_id not in ( select car_id from car_rental_company_rental_history where date_format(start_date, '%Y-%m')='2022-11' or date_format(end_date, '%Y-%m')='2022-11' or (start_date <= '2022-10-31' and end_date >= '2022-12-01')) having FEE >= 500000 and FEE < 2000000 order by 3 desc, 2, 1 desc
#생각해보기 #조건 2에 대한 방법을 다양한 관점으로 생각해보기 start_date <= '2022-11-30' and end_date >= '2022-11-01' #시간이 오래 걸린 이유! 조건 2에 부합하는 쿼리문 작성에 시간이 걸림! #그리고 ''를 사용 안해서 정답이 나오지 않았었음.. 주의하자!