프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '트럭'인 자동차의 대여 기록에 대해서 대여 기록 별로 대여 금액(컬럼명: FEE)을 구하여 대여 기록 ID와 대여 금액 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
SELECT HISTORY_ID,
round(DAILY_FEE * (DATEDIFF(h.END_DATE,h.START_DATE)+1)
* (case
when DATEDIFF(END_DATE,START_DATE)+1 < 7 then 1
when DATEDIFF(END_DATE,START_DATE)+1 < 30 then 0.95
when DATEDIFF(END_DATE,START_DATE)+1 < 90 then 0.92
else 0.85 end)) as "FEE"
from CAR_RENTAL_COMPANY_CAR as c
join CAR_RENTAL_COMPANY_RENTAL_HISTORY as h
on c.CAR_ID = h.CAR_ID
join CAR_RENTAL_COMPANY_DISCOUNT_PLAN as p
on c.CAR_TYPE = p.CAR_TYPE
where c.car_type = "트럭"
group by HISTORY_ID
order by FEE desc , HISTORY_ID desc
- 테이블 3개를 조인
- WHERE 조건절 사용하여 트럭만 추출
- GROUP BY로 대여 기록별 그룹화
- FEE를 구하기 위한 수식 만들고 ROUND로 반올림해서 정수만
- FEE를 구하기 위한 수식 대여 기간 따라서 할인율 작성 위해 CASE WHEN 사용
[오늘의 코드 92] 아픈 동물 찾기 (0) | 2024.07.30 |
---|---|
[오늘의 코드 91] 여러 기준으로 정렬하기 (1) | 2024.07.23 |
[오늘의 코드 89] [프로그래머스] 나이 정보가 없는 회원 수 구하기 (0) | 2024.07.19 |
[오늘의 코드 88] [프로그래머스] 9로 나눈 나머지 (0) | 2024.07.17 |
[오늘의 코드 87] [프로그래머스] 나이 정보가 없는 회원 수 구하기 (1) | 2024.07.16 |