[코드카타] SQL 13 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

Data_Student·2024년 11월 1일
0

코드카타

목록 보기
20/57

[코드카타] SQL 13 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

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에 부합하는 쿼리문 작성에 시간이 걸림!
#그리고 ''를 사용 안해서 정답이 나오지 않았었음.. 주의하자!

0개의 댓글