Recent Posts
Recent Comments
ღ yuni_world ღ
[MySQL] [프로그래머스 level 4] 자동차 대여 기록 별 대여 금액 구하기 본문
📌 문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/151141
코딩테스트 연습 - 자동차 대여 기록 별 대여 금액 구하기
알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려
school.programmers.co.kr
📌 문제풀이
with
raw1 as (
select a.car_id, a.car_type, a.daily_fee, b.history_id, daydiff,
case
when daydiff >= 90 then '90일 이상'
when daydiff >= 30 then '30일 이상'
when daydiff >= 7 then '7일 이상'
else '이 외'
end as duration
from CAR_RENTAL_COMPANY_CAR a right join
(select history_id, car_id, (datediff(end_date,start_date)+1) as daydiff
from CAR_RENTAL_COMPANY_RENTAL_HISTORY) b on a.car_id=b.car_id
where a.car_type = '트럭')
select history_id,
truncate(daydiff*daily_fee*(100-IFNULL(discount_rate, 0))/100, 0) as fee
from raw1 a left join CAR_RENTAL_COMPANY_DISCOUNT_PLAN b on a.duration=b.duration_type and b.car_type='트럭'
order by 2 desc, 1 desc
📖 NOTE
- datediff 함수는 시작일과 종료일의 차이를 계산할 때 종료일을 포함하지 않기 때문에, 실제 대여 기간(위 쿼리에서 daydiff 컬럼)을 정확히 구하기 위해서는 계산 결과에 1을 더해준다.
- 출력 조건에 맞게 정수부분만 출력하기 위해 truncate함수를 사용하여 소수점 아래 부분은 제거
'MySQL > 프로그래머스' 카테고리의 다른 글
| [MySQL] [프로그래머스 level 4] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2025.10.30 |
|---|---|
| [MySQL] [프로그래머스 level 4] 입양 시각 구하기(2) (0) | 2025.10.24 |
| [MySQL] [프로그래머스 level 3] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2025.06.18 |
| [MySQL] [프로그래머스 level 3] 업그레이드 할 수 없는 아이템 구하기 (0) | 2025.06.17 |
| [MySQL] [프로그래머스 level 3] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (2) | 2025.06.14 |