https://school.programmers.co.kr/learn/courses/30/lessons/151141
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
최종 쿼리
WITH HISTORY AS(
SELECT
A.HISTORY_ID,
A.CAR_ID,
B.DAILY_FEE,
(DATEDIFF(A.END_DATE, A.START_DATE) + 1) AS DURATION,
CASE
WHEN DATEDIFF(A.END_DATE, A.START_DATE) + 1 >= 90 THEN '90일 이상'
WHEN DATEDIFF(A.END_DATE, A.START_DATE) + 1 >= 30 THEN '30일 이상'
WHEN DATEDIFF(A.END_DATE, A.START_DATE) + 1 >= 7 THEN '7일 이상'
ELSE '할인 없음'
END AS DURATION_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY A
JOIN CAR_RENTAL_COMPANY_CAR B
ON A.CAR_ID = B.CAR_ID AND B.CAR_TYPE = '트럭')
SELECT
A.HISTORY_ID,
CASE
WHEN A.DURATION_TYPE = '할인 없음' THEN ROUND(A.DAILY_FEE*A.DURATION, 0)
ELSE ROUND(A.DAILY_FEE*A.DURATION*(1-B.DISCOUNT_RATE/100), 0)
END AS FEE
FROM HISTORY A
LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN B
ON A.DURATION_TYPE = B.DURATION_TYPE AND B.CAR_TYPE = '트럭'
ORDER BY FEE DESC, HISTORY_ID DESC;
'SQL' 카테고리의 다른 글
[SQL 고득점 Kit] JOIN : 보호소에서 중성화한 동물 (1) | 2024.09.10 |
---|---|
[SQL 고득점 Kit] SELECT : 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.09.10 |
[SQL 고득점 Kit] GROUP BY : 언어별 개발자 분류하기 (0) | 2024.08.21 |
SQL TMP (1) | 2024.08.13 |
sql (0) | 2024.08.07 |
댓글