https://school.programmers.co.kr/learn/courses/30/lessons/151141
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 나의 풀이
CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블을 조인하지 않고, 할인율 하드코딩
자동차 종류 별 대여 기간 종류 별 할인 정책 정보 테이블에서 할인율을 확인한 뒤 사용 (🚨문제 설명의 예시와 할인율 다름🚨)
✅ 대여 기록 별 대여 금액 FEE ➡︎ DAILY_FEE * 할인율 * 대여날짜
FEE 정수부분만 출력 ➡︎ FLOOR( DAILY_FEE * 할인율 * 대여날짜 )
100 < SIZE_OF_COLONY <= 1000 (❌, and 로 범위 추가 해야함)
100 < SIZE_OF_COLONY and SIZE_OF_COLONY <= 1000
SIZE_OF_COLONY between 100 and 1000
✅ 대여기간 구하기 ➡︎ DATEDIFF(대여 종료일, 대여 시작일) + 1
DATEDIFF ( datepart , startdate , enddate )
- 나의 코드
/* 할인율 확인용
select DURATION_TYPE, DISCOUNT_RATE
from CAR_RENTAL_COMPANY_DISCOUNT_PLAN
where CAR_TYPE = '트럭';
*/
select A.HISTORY_ID
, FLOOR(B.DAILY_FEE
* (case when DATEDIFF(A.END_DATE, A.START_DATE)+1 >= 90 then 0.85
when DATEDIFF(A.END_DATE, A.START_DATE)+1 >= 30 then 0.92
when DATEDIFF(A.END_DATE, A.START_DATE)+1 >= 7 then 0.95
else 1 end)
* (DATEDIFF(A.END_DATE, A.START_DATE)+1)
) as FEE
from CAR_RENTAL_COMPANY_RENTAL_HISTORY A
inner join CAR_RENTAL_COMPANY_CAR B
on A.CAR_ID = B.CAR_ID
where B.CAR_TYPE = '트럭'
order by FEE desc, HISTORY_ID desc;
+
✅ CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 조인하여 풀이
- 다른 풀이 방식
select
a.HISTORY_ID,
FLOOR(a.DAILY_FEE * ((100 - COALESCE(crcdp.DISCOUNT_RATE,0)) / 100) * (DATEDIFF(a.END_DATE, a.START_DATE) + 1)) as FEE
from
(
select
crcrh.HISTORY_ID,
crcrh.START_DATE,
crcrh.END_DATE,
crcc.CAR_ID,
crcc.CAR_TYPE,
crcc.DAILY_FEE
from CAR_RENTAL_COMPANY_CAR crcc
inner join CAR_RENTAL_COMPANY_RENTAL_HISTORY crcrh
on crcc.CAR_ID = crcrh.CAR_ID
where crcc.CAR_TYPE ='트럭'
) a
left join CAR_RENTAL_COMPANY_DISCOUNT_PLAN crcdp
on a.CAR_TYPE = crcdp.CAR_TYPE
and IF(DATEDIFF(a.END_DATE, a.START_DATE) + 1 BETWEEN 7 AND 30,'7일 이상',
IF(DATEDIFF(a.END_DATE, a.START_DATE) + 1 BETWEEN 30 AND 90, '30일 이상',
IF(DATEDIFF(a.END_DATE, a.START_DATE) + 1 >= 90, '90일 이상','-'))) = crcdp.DURATION_TYPE
order by FEE desc, HISTORY_ID desc;
'공부 > SQL' 카테고리의 다른 글
이름에 el이 들어가는 동물 찾기 (0) | 2025.01.04 |
---|---|
FrontEnd 개발자 찾기 (1) | 2024.10.30 |
대장균의 크기에 따라 분류하기 1 (0) | 2024.08.03 |
조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.08.02 |
대장균들의 자식의 수 구하기 (0) | 2024.08.01 |