Post

[Programmers] 157339번 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 [MySQL]

[Programmers] 157339번 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 [MySQL]

문제 링크


1. 문제 풀이


CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블을 CAR_TYPE으로 JOIN 해줬다. 이때 30일간의 대여금액만 출력하므로 DURATION_TYPE까지 30일 이상인 레코드만 JOIN 했다. 이후 WHERE 절에서 CAR_TYPE세단이나 SUV인지와 서브쿼리로 CAR_IDCAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여가능한 기간에 포함됐는지 판단했다.


2. 쿼리


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
    c.CAR_ID,
    c.CAR_TYPE,
    ROUND(c.DAILY_FEE * (100 - p.DISCOUNT_RATE) / 100 * 30) AS FEE
FROM CAR_RENTAL_COMPANY_CAR AS c
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS p
    ON c.CAR_TYPE = p.CAR_TYPE AND p.DURATION_TYPE = '30일 이상'
WHERE
    c.CAR_TYPE IN ('세단', 'SUV') AND
    c.CAR_ID NOT IN (
        SELECT CAR_ID
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
        WHERE START_DATE <= '2022-11-30' AND END_DATE >= '2022-11-01'
    )
HAVING 500000 <= FEE AND FEE < 2000000
ORDER BY
    FEE DESC,
    c.CAR_TYPE ASC,
    c.CAR_ID DESC;

This post is licensed under CC BY 4.0 by the author.