1. ๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ์๋์ฐจ ๋์ฌ ํ์ฌ์์ ๋์ฌ ์ค์ธ ์๋์ฐจ๋ค์ ์ ๋ณด๋ฅผ ๋ด์ CAR_RENTAL_COMPANY_CAR ํ ์ด๋ธ๊ณผ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ์ ๋ณด๋ฅผ ๋ด์ CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ๊ณผ ์๋์ฐจ ์ข ๋ฅ ๋ณ ๋์ฌ ๊ธฐ๊ฐ ์ข ๋ฅ ๋ณ ํ ์ธ ์ ์ฑ ์ ๋ณด๋ฅผ ๋ด์ CAR_RENTAL_COMPANY_DISCOUNT_PLAN ํ ์ด๋ธ์ ๋๋ค.
CAR_RENTAL_COMPANY_CAR ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS๋ ๊ฐ๊ฐ ์๋์ฐจ ID, ์๋์ฐจ ์ข ๋ฅ, ์ผ์ผ ๋์ฌ ์๊ธ(์), ์๋์ฐจ ์ต์ ๋ฆฌ์คํธ๋ฅผ ๋ํ๋ ๋๋ค.

์๋์ฐจ ์ข ๋ฅ๋ '์ธ๋จ', 'SUV', '์นํฉ์ฐจ', 'ํธ๋ญ', '๋ฆฌ๋ฌด์ง' ์ด ์์ต๋๋ค. ์๋์ฐจ ์ต์ ๋ฆฌ์คํธ๋ ์ฝค๋ง(',')๋ก ๊ตฌ๋ถ๋ ํค์๋ ๋ฆฌ์คํธ(์: ''์ด์ ์ํธ,์ค๋งํธํค,์ฃผ์ฐจ๊ฐ์ง์ผ์'')๋ก ๋์ด์์ผ๋ฉฐ, ํค์๋ ์ข ๋ฅ๋ '์ฃผ์ฐจ๊ฐ์ง์ผ์', '์ค๋งํธํค', '๋ค๋น๊ฒ์ด์ ', 'ํตํ์ํธ', '์ด์ ์ํธ', 'ํ๋ฐฉ์นด๋ฉ๋ผ', '๊ฐ์ฃฝ์ํธ' ๊ฐ ์์ต๋๋ค.
CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, HISTORY_ID, CAR_ID, START_DATE, END_DATE๋ ๊ฐ๊ฐ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ID, ์๋์ฐจ ID, ๋์ฌ ์์์ผ, ๋์ฌ ์ข ๋ฃ์ผ์ ๋ํ๋ ๋๋ค.
CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, HISTORY_ID, CAR_ID, START_DATE, END_DATE๋ ๊ฐ๊ฐ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ID, ์๋์ฐจ ID, ๋์ฌ ์์์ผ, ๋์ฌ ์ข ๋ฃ์ผ์ ๋ํ๋ ๋๋ค.

CAR_RENTAL_COMPANY_DISCOUNT_PLAN ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, PLAN_ID, CAR_TYPE, DURATION_TYPE, DISCOUNT_RATE๋ ๊ฐ๊ฐ ์๊ธ ํ ์ธ ์ ์ฑ ID, ์๋์ฐจ ์ข ๋ฅ, ๋์ฌ ๊ธฐ๊ฐ ์ข ๋ฅ, ํ ์ธ์จ(%)์ ๋ํ๋ ๋๋ค.

ํ ์ธ์จ์ด ์ ์ฉ๋๋ ๋์ฌ ๊ธฐ๊ฐ ์ข ๋ฅ๋ก๋ '7์ผ ์ด์' (๋์ฌ ๊ธฐ๊ฐ์ด 7์ผ ์ด์ 30์ผ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ), '30์ผ ์ด์' (๋์ฌ ๊ธฐ๊ฐ์ด 30์ผ ์ด์ 90์ผ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ), '90์ผ ์ด์' (๋์ฌ ๊ธฐ๊ฐ์ด 90์ผ ์ด์์ธ ๊ฒฝ์ฐ) ์ด ์์ต๋๋ค. ๋์ฌ ๊ธฐ๊ฐ์ด 7์ผ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ ํ ์ธ์ ์ฑ ์ด ์์ต๋๋ค.
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๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
2. ์ถ๋ ฅ ์์

3. ๋ฌธ์ ๋ต์
SELECT *
FROM (
SELECT
c.car_id,
c.car_type,
ROUND(c.daily_fee * (100 - p.discount_rate) * 30 / 100) AS fee
FROM car_rental_company_car c
JOIN car_rental_company_discount_plan p
ON c.car_type = p.car_type AND
p.duration_type = '30์ผ ์ด์'
WHERE c.car_type IN ('์ธ๋จ', 'SUV')
AND NOT EXISTS ( # ์์ ๋์ฌ ๊ธฐ๋ก์ด ์์ด๋ ํต๊ณผ
SELECT 1
FROM car_rental_company_rental_history h
WHERE h.car_id = c.car_id AND
h.start_date <= '2022-11-30' AND # ๋ ์ง ๊ฒน์น๋ ์กฐ๊ฑด
h.end_date >= '2022-11-01'
)
) t
# 30์ผ๊ฐ ๋์ฌ๊ธ์ก
WHERE t.fee >= 500000 AND t.fee < 2000000
ORDER BY t.fee DESC, t.car_type ASC, t.car_id DESC;