본문 바로가기
알고리즘/프로그래머스

자동차 대여 기록 별 대여 금액 구하기

by 1.5볼트 2023. 3. 26.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/151141

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

버릇이 없지만 쉬운 편인 sql 문제들

그래도 좀 난이도가 있는 편이라 길어졌다 3개의 테이블이 연관되어 있어서 n-1 번 즉 2번의 조인을 하고 조인 내부에서는 서브 쿼리 써서 필요한 값을 뽑는 과정들이 복잡하다 윈도우 함수를 몰랐으면 더 복잡해졌을 거 같은데 sqld가 이런 도움을 주다니 나머지는 운명에 맡기겠다

SELECT b.HISTORY_ID,(b.END_DATE-b.START_DATE+1)*(a.DAILY_FEE*(100-nvl(c.DISCOUNT_RATE,0))/100) FEE
from CAR_RENTAL_COMPANY_CAR a right outer join
    CAR_RENTAL_COMPANY_RENTAL_HISTORY b
    on (a.CAR_ID=b.CAR_ID)
    left outer join
    (select 
        substr(DURATION_TYPE,0,instr(DURATION_TYPE,'일')-1) q,
        substr(lead(DURATION_TYPE,1,'1000일') over(partition by CAR_TYPE order by DISCOUNT_RATE),0,instr(lead(DURATION_TYPE,1,'1000일') over(partition by CAR_TYPE order by DISCOUNT_RATE),'일')-1) w
 ,DISCOUNT_RATE
 from CAR_RENTAL_COMPANY_DISCOUNT_PLAN 
 where car_type='트럭') c
    on(b.END_DATE-b.START_DATE+1>=c.q and b.END_DATE-b.START_DATE+1<c.w)
where a.CAR_TYPE='트럭'
order by FEE desc,b.HISTORY_ID desc

'알고리즘 > 프로그래머스' 카테고리의 다른 글

이진 변환 반복하기  (0) 2023.03.28
다단계 칫솔 판매  (0) 2023.03.27
광물 캐기  (0) 2023.03.24
당구 연습  (0) 2023.03.21
우박수열 정적분  (0) 2023.03.20

댓글