프로그래머스 LV 4. 157339 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 MySQL

https://school.programmers.co.kr/learn/courses/30/lessons/157339

SELECT 
    C.CAR_ID, 
    C.CAR_TYPE, 
    ROUND(C.DAILY_FEE*30*(100-P.DISCOUNT_RATE)/100) AS FEE
FROM
    CAR_RENTAL_COMPANY_CAR AS C
JOIN 
    CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H ON C.CAR_ID = H.CAR_ID
JOIN
    CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS P ON C.CAR_TYPE = P.CAR_TYPE
WHERE
    C.CAR_ID NOT IN(
        SELECT CAR_ID
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
        WHERE END_DATE > '2022-11-01' AND START_DATE <'2022-12-01'
    )
    AND P.DURATION_TYPE = '30일 이상'
GROUP BY
    C.CAR_ID
HAVING
    C.CAR_TYPE IN ('세단','SUV') AND (FEE >= 500000 AND FEE < 2000000)
ORDER BY
    FEE DESC, CAR_TYPE, CAR_ID DESC;

 

잘 배워두어야 할 점은, 

NOT IN ( )
형태와

IN () 

형태를 잘 이해하고 앞으로 요긴하게 잘 사용해야겠다. 

그리고 주의해야할 점으로는, 

(FEE>= 500000 AND FEE <2000000) OR (500000<= FEE AND FEE <2000000) 형태로는 작성할 수 있는데, 

( 500000<= FEE < 2000000) 형태로는 작성해선 안된다. 전혀 다른 값이 나온다. 

주의하도록 하자. 

 

  Comments,     Trackbacks