본문 바로가기
프로젝트(진행중)/MySQL

프로그래머스 SQL 공부 5

by 일말고프로젝트 2023. 3. 3.

문제

 

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

댓글