✅ 코드
SELECT C.CAR_ID AS CAR_ID
, C.CAR_TYPE AS CAR_TYPE
, FLOOR(C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE/100)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR AS C
INNER JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS P ON C.CAR_TYPE = P.CAR_TYPE
AND P.DURATION_TYPE = '30일 이상'
AND C.CAR_TYPE IN ('세단', 'SUV')
LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H ON C.CAR_ID = H.CAR_ID
AND H.END_DATE >= '2022-11-01'
AND H.START_DATE <= '2022-11-30'
WHERE ROUND(C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE/100)) BETWEEN 500000 AND 1999999
AND H.CAR_ID IS NULL
ORDER BY FEE DESC
, CAR_TYPE
, CAR_ID DESC
테이블간 공유하는 컬럼을 기준으로 관계를 설정하고
단계적으로 INNER 조인과 LEFT JOIN을 수행했습니다.
H.CAR_ID 컬럼의 값이 NULL인 경우를 WHERE문의 조건으로 포함했는데, 이는 문제에 주어진 기간 동안 대여가 가능한 차량을 필터링 하기 위함입니다.
'알고리즘' 카테고리의 다른 글
[SQL]프로그래머스 Lv.3 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2023.12.15 |
---|---|
[SQL]프로그래머스 Lv.3 자동차 대여기록에서 대여중/대여 가능 여부 구하기 (0) | 2023.12.15 |
[SQL]프로그래머스 Lv.4 입양 시각 구하기(2) (0) | 2023.09.26 |
[SQL]프로그래머스 Lv.4 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2023.09.25 |
[SQL]프로그래머스 Lv.3 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2023.08.12 |