[PRO] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - Lv4

vvo_ter·2023년 12월 17일
0

SQL 고득점 Kit

목록 보기
21/24
post-custom-banner

💻 SQL 고득점 Kit > JOIN > 문제


✏️ 풀이

  • 세 테이블 조인하기
  • 조건 1: 자동차 종류가 '세단' 또는 'SUV'
    CAR_TYPE IN ('세단', 'SUV)
  • 조건 2: 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능
    • 해당 기간에 대여 중이면 안 됨
    • 예외 처리
      • 대여 시작일 또는 대여 종료일이 해당 기간 안에 있는 경우
      • 대여 시작일이 범위 시작 이전이고 대여 종료일이 범위 끝 이후인 경우
  • 조건 3: 30일간 대여 금액(할인 적용 금액)이 50만원 이상 200만원 미만
    DURATION_TYPE = '30일 이상' AND ROUND(DAILY_FEE * (1 - DISCOUNT_RATE / 100) * 30) BETWEEN 500000 AND 2000001

👉 제출 코드

SELECT DISTINCT(C.CAR_ID), C.CAR_TYPE, ROUND(DAILY_FEE * (1 - DISCOUNT_RATE / 100) * 30) AS FEE
FROM CAR_RENTAL_COMPANY_CAR C
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H
ON C.CAR_ID = H.CAR_ID
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN P
ON C.CAR_TYPE = P.CAR_TYPE
WHERE C.CAR_TYPE IN ('세단', 'SUV')
AND C.CAR_ID NOT IN (SELECT CAR_ID
                    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                    WHERE START_DATE BETWEEN '2022-11-01' AND '2022-11-30 59:59:59'
                    OR END_DATE BETWEEN '2022-11-01' AND '2022-11-30 59:59:59'
                    OR START_DATE <= '2022-11-01' AND END_DATE >= '2022-11-30') # **
AND P.DURATION_TYPE = '30일 이상'
AND ROUND(DAILY_FEE * (1 - DISCOUNT_RATE / 100) * 30) BETWEEN 500000 AND 2000001 # 이상 이하
ORDER BY 3 DESC, 2, 1 DESC
profile
's Coding Memory
post-custom-banner

0개의 댓글