Lv4. 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/157339
내가 작성한 코드
SELECT C.CAR_ID, C.CAR_TYPE, FLOOR((C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE / 100))) AS FEE
FROM CAR_RENTAL_COMPANY_CAR C
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN P
ON C.CAR_TYPE = P.CAR_TYPE
WHERE C.CAR_TYPE IN ('세단', 'SUV') AND P.DURATION_TYPE = '30일 이상'
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 FEE BETWEEN 500000 AND 1999999
ORDER BY FEE DESC, C.CAR_TYPE ASC, C.CAR_ID DESC;
Oracle
-- 오라클은 SELECT문이 다 실행되어야 FEE라는 이름을 인식함. 따라서 인라인뷰로 FEE를 미리 계산해두고 메인 쿼리에서 FEE를 가져와 50만 이상인지 검사
SELECT *
FROM (SELECT C.CAR_ID, C.CAR_TYPE, TRUNC(C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE / 100)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR C
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN P
ON C.CAR_TYPE = P.CAR_TYPE
WHERE C.CAR_TYPE IN ('세단', 'SUV') AND P.DURATION_TYPE = '30일 이상'
AND C.CAR_ID NOT IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE <= TO_DATE('2022-11-30', 'YYYY-MM-DD') AND END_DATE >= TO_DATE('2022-11-01' , 'YYYY-MM-DD')))
WHERE FEE >= 500000 AND FEE < 2000000
ORDER BY FEE DESC, CAR_TYPE ASC, CAR_ID DESC;'코딩테스트' 카테고리의 다른 글
| [26.03.13 코테/회고(MySQL/Oracle)]-자동차 대여 기록에서 대여중/대여 가능 여부 구분하기 (0) | 2026.03.13 |
|---|---|
| [26.03.12 코테/회고(MySQL/Oracle)]-대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2026.03.12 |
| [26.03.10 코테(MySQL)]-연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 (0) | 2026.03.10 |
| [26.03.06 코테(MySQL)]-FrontEnd 개발자 찾기 (0) | 2026.03.06 |
| [26.03.05 코테(MySQL)]-분기별 분화된 대장균의 개체 수 구하기 (0) | 2026.03.05 |