본문 바로가기
SQL

[SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기, JOIN

by 유일리 2024. 9. 11.

※ 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 해결 TIP

문제에서 주어진대로 차례대로 진행해보자.

1) 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능한 경우

SELECT CAR_ID, CAR_TYPE, DAILY_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE 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 CAR_TYPE IN ('세단','SUV');

2) 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차

아래 전체 코드와 같다.

 

전체 코드

SELECT CAR_ID, A.CAR_TYPE, ROUND((30*DAILY_FEE*(100-DISCOUNT_RATE)/100)) AS FEE
FROM (
    SELECT CAR_ID, CAR_TYPE, DAILY_FEE
    FROM CAR_RENTAL_COMPANY_CAR
    WHERE 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 CAR_TYPE IN ('세단','SUV')) AS A
JOIN (SELECT CAR_TYPE,DISCOUNT_RATE FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN WHERE DURATION_TYPE='30일 이상') AS B
ON A.CAR_TYPE=B.CAR_TYPE
HAVING FEE>=500000 AND FEE<2000000
ORDER BY FEE DESC, CAR_TYPE, CAR_ID DESC;

댓글