문제
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 T1.CAR_ID, T1.CAR_TYPE, CAST(30 * T1.DAILY_FEE * (100 - CAST(SUBSTRING(T2.DISCOUNT_RATE,1,1) AS SIGNED)) / 100 AS SIGNED INTEGER) AS FEE
FROM CAR_RENTAL_COMPANY_CAR AS T1
INNER JOIN (
SELECT CAR_TYPE
,DISCOUNT_RATE
FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN
WHERE DURATION_TYPE = '30일 이상'
) AS T2
ON T1.CAR_TYPE = T2.CAR_TYPE
WHERE T1.CAR_ID NOT IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE END_DATE BETWEEN '2022-10-31 23:59:59' AND '2022-12-01 00:00:00'
OR START_DATE BETWEEN '2022-10-31 23:59:59' AND '2022-12-01 00:00:00'
OR '2022-11-01 00:00:00' BETWEEN START_DATE AND END_DATE
)
HAVING FEE BETWEEN 499999 AND 2000001
ORDER BY 3 DESC, 2, 1 DESC
;
계속 틀린 이유
11월 1 일 ~ 11월 30일 까지 대여가 가능한 차를 조회할 때
START DATE와 END_DATE 기준으로 각각 11월에 포함되지만 않으면 된다고 생각했지만, 11월 전체를 포함한 경우도 있었기 때문에 자꾸 오류가 났음
'프로젝트(진행중) > MySQL' 카테고리의 다른 글
HackerRank 공부 1 (0) | 2023.03.06 |
---|---|
프로그래머스 SQL 공부 6 (0) | 2023.03.03 |
속도를 고려한 SQL (0) | 2023.03.03 |
프로그래머스 SQL 공부 4 (0) | 2023.03.03 |
프로그래머스 SQL 공부 3 (0) | 2023.03.02 |
댓글