*프로그래머스 SQL 문제 풀이입니다.
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를 기준으로 내림차순 정렬해주세요.
SELECT C.CAR_ID, C.CAR_TYPE, (C.DAILY_FEE * ((100 - D.DISCOUNT_RATE) / 100 )) * 30 AS FEE
FROM (
SELECT A.CAR_ID, A.CAR_TYPE, A.DAILY_FEE
FROM CAR_RENTAL_COMPANY_CAR A
WHERE A.CAR_ID NOT IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'YYYYMMDD') <= '20221130' AND TO_CHAR(END_DATE, 'YYYYMMDD') >= '20221101'
)
AND A.CAR_TYPE IN ('세단', 'SUV')
) C, CAR_RENTAL_COMPANY_DISCOUNT_PLAN D
WHERE C.CAR_TYPE = D.CAR_TYPE
AND D.DURATION_TYPE LIKE '30%'
AND (C.DAILY_FEE * ((100 - D.DISCOUNT_RATE) / 100)) * 30 BETWEEN 500000 AND 2000000
ORDER BY FEE DESC, C.CAR_TYPE, C.CAR_ID DESC;