프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/157339
DESC CAR_RENTAL_COMPANY_CARDESC 테이블 명을 검색해보아 어떻게 출력되는지 확인해보자car_id 가 기본키 PRI 이란걸 알 수 있다DESC CAR_RENTAL_COMPANY_RENTAL_HISTORY -> history_id: PRIDESC CAR_RENTAL_COMPANY_DISCOUNT_PLAN -> plan_id: PRI join 할 수 없다# CAR_RENTAL_COMPANY_RENTAL_hISTORY
# PK : history_id
# FK : CAR_IDjoin 시켜보기 - 문제에서 자동차종류 트럭만 요구하고있다SELECT *
FROM CAR_RENTAL_COMPANY_CAR CAR JOIN CAR_RENTAL_COMPANY_RENTAL_hiSTORY HIS
ON CAR CAR_ID = HIS.CAR_ID
WHERE CAR_TYPE = '트럭'SELECT CAR.CAR_ID, DAILY_FEE, HISTORY_ID, START_DATE, END_DATE
FROM CAR_RENTAL_COMPANY_CAR CAR JOIN CAR_RENTAL_COMPANY_RENTAL_hiSTORY HIS
ON CAR CAR_ID = HIS.CAR_ID
WHERE CAR_TYPE = '트럭'SELECT *, DATEDIFF(END_DATE, START_DATE) + 1 AS 'RENTAL_PERIOD'
FROM (
SELECT CAR.CAR_ID, DAILY_FEE, HISTORY_ID, START_DATE, END_DATE
FROM CAR_RENTAL_COMPANY_CAR CAR JOIN CAR_RENTAL_COMPANY_RENTAL_hiSTORY HIS
ON CAR CAR_ID = HIS.CAR_ID
WHERE CAR_TYPE = '트럭') TBL1SELECT
HISTORY_ID
RENTAL_ PERIOD * ROUND(DAILY_FEE - (DAILY_FEE * DISCOUNT_RATE), 0) FEE
FROM (
SELECT *,
CASE WHEN RENTAL_PERIOD >= 90 THEN (SELECT DISCOUNT_RATE / 100 FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN WHERE CAR_TYPE = '트럭' AND DURATION_TYPE = '90일 이상')
WHEN RENTAL_PERIOD >= 30 THEN (SELECT DISCOUNT_RATE / 100 FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN WHERE CAR_TYPE = '트럭' AND DURATION_TYPE = '30일 이상')
WHEN RENTAL_PERIOD >= 7 THEN (SELECT DISCOUNT_RATE / 100 FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN WHERE CAR_TYPE = '트럭' AND DURATION_TYPE = '7일 이상')
ELSE 0.00 END AS 'DISCOUNT RATE'
FROM (
SELECT *, DATEDIFF(END_DATE, START_DATE) + 1 AS 'RENTAL_PERIOD'
FROM (
SELECT CAR.CAR_ID, DAILY_FEE, HISTORY_ID, START_DATE, END_DATE
FROM CAR_RENTAL_COMPANY_CAR CAR JOIN CAR_RENTAL_COMPANY_RENTAL_hiSTORY HIS
ON CAR CAR_ID = HIS.CAR_ID
WHERE CAR_TYPE = '트럭') TBL_1 ) TBL_2) TBL_3
ORDER BY FEE DESC, HISTORY_ID DESC;