Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://school.programmers.co.kr/learn/courses/30/lessons/151141?language=oracle
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
나의 풀이
- DBMS : Oracle 기준
- JOIN 시 AND 문과 CASE 문을 활용하면 직관적이고 짧은 쿼리를 작성할 수 있다.
SELECT
HISTORY_ID,
(DAILY_FEE * (END_DATE - START_DATE + 1)) * (1-NVL(discount_rate, 0)/100) FEE
FROM
CAR_RENTAL_COMPANY_CAR C JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H
ON C.CAR_ID = H.CAR_ID
LEFT OUTER JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN P
ON C.CAR_TYPE = P.CAR_TYPE
AND P.DURATION_TYPE = (CASE
WHEN (END_DATE - START_DATE + 1) >= 90 THEN '90일 이상'
WHEN (END_DATE - START_DATE + 1) >= 30 THEN '30일 이상'
WHEN (END_DATE - START_DATE + 1) >= 7 THEN '7일 이상'
ELSE NULL
END)
WHERE C.CAR_TYPE = '트럭'
ORDER BY 2 DESC, 1 DESC
'Dev > PS' 카테고리의 다른 글
[프로그래머스-SQL 고득점 Kit] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2023.08.11 |
---|---|
[프로그래머스-SQL 고득점 Kit] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.08.11 |
[프로그래머스-SQL 고득점 Kit] 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.08.10 |
[프로그래머스-SQL 고득점 Kit] 조건에 맞는 사용자 정보 조회하기 (0) | 2023.08.10 |
[프로그래머스-SQL 고득점 Kit] 루시와 엘라 찾기 (0) | 2023.08.10 |