Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SQL #DDL
- 자동차 대여 기록에서 장기/단기 대여 구분하기 #프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기
- 프로그래머스 #프로그래머스 입양 시각 구하기(2) #입양 시각 구하기(2) #프로그래머스 입양 시각 구하기(1) #입양 시각 구하기(1)
- 프로그래머스 조건에 맞는 사용자 정보 조회하기
- 조건에 맞는 사용자 정보 조회하기
- 프로그래머스 #조건별로 분류하여 주문상태 출력하기 #프로그래머스 조건별로 분류하여 주문상태 출력하기
- 프로그래머스 #프로그래머스 5월 식품들의 총매출 조회하기 #5월 식품들의 총매출 조회하기
- 프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기
- 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 #프로그래머스 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
- 프로그래머스 조건에 부합하는 중고거래 댓글 조회하기
- 프로그래머스 #프로그래머스 헤비 유저가 소유한 장소 #헤비 유저가 소유한 장소
- 프로그래머스 #프로그래머스 중성화 여부 파악하기 #중성화 여부 파악하기
- 조건에 부합하는 중고거래 댓글 조회하기
- 프로그래머스 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
- 자동차 대여 기록 별 대여 금액 구하기
- 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
- 프로그래머스 #프로그래머스 서울에 위치한 식당 목록 출력하기 #서울에 위치한 식당 목록 출력하기
- 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
- 강원도에 위치한 생산공장 목록 출력하기 #프로그래머스 강원도에 위치한 생산공장 목록 출력하기 #프로그래머스 #경기도에 위치한 식품창고 목록 출력하기 #프로그래머스 경기도에 위치한 식
- 저자 별 카테고리 별 매출액 집계하기
- 프로그래머스 조건에 부합하는 중고거래 상태 조회하기
- 태블로 테이블 계산
- 프로그래머스 취소되지 않은 진료 예약 조회하기 #취소되지 않은 진료 예약 조회하기
- 프로그래머스 #프로그래머스 NULL 처리하기 #NULL 처리하기
- 프로그래머스 #오랜 기간 보호한 동물(2) #프로그래머스 오랜 기간 보호한 동물(2)
- 조건에 부합하는 중고거래 상태 조회하기
- 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 #프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
- 가격이 제일 비싼 식품의 정보 출력하기 #프로그래머스 가격이 제일 비싼 식품의 정보 출력하기 #프로그래머스 #식품분류별 가장 비싼 식품의 정보 조회하기 #프로그래머스 식품분류별 가장 비
- 프로그래머스 #프로그래머스 우유와 요거트가 담긴 장바구니 #우유와 요거트가 담긴 장바구니
- 조건에 맞는 사용자와 총 거래금액 조회하기
Archives
- Today
- Total
데이터 분석
프로그래머스 - 자동차 대여 기록 별 대여 금액 구하기 (WITH) 본문
- WITH
- CASE
- NVL
- JOIN
코드가 길어져서 중간까지 과정을 WITH를 통해 쿼리를 따로 만들어 두려한다.
WITH DUR AS (
SELECT CAR.DAILY_FEE, CAR.CAR_TYPE, HIS.HISTORY_ID,
END_DATE - START_DATE + 1 PERIOD,
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 '' END AS DURATION_TYPE
FROM CAR_RENTAL_COMPANY_CAR CAR JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY HIS
ON CAR.CAR_ID = HIS.CAR_ID
WHERE CAR.CAR_TYPE = '트럭'
)
우선 대여 기간별 해당기간에 맞게 구분해준다. 실행하면
다음과 같은 DUR라는 쿼리가 나온다.
이제 새로 만들어진 DUR의 CAR_TYPE과 DURANTION_TYPE을 PLAN테이블의 CAR_TYPE과 DURANTION_TYPE를 JOIN으로 연동해주면 된다.
SELECT DUR.HISTORY_ID,
ROUND(DUR.DAILY_FEE * DUR.PERIOD * (100 - NVL(PLAN.DISCOUNT_RATE,0)) / 100) AS FEE
FROM DUR LEFT OUTER JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN PLAN
ON DUR.DURATION_TYPE = PLAN.DURATION_TYPE
AND DUR.CAR_TYPE = PLAN.CAR_TYPE
ORDER BY FEE DESC, HISTORY_ID DESC
;
https://school.programmers.co.kr/learn/courses/30/lessons/151141?language=oracle
'SQL > 프로그래머스 코딩' 카테고리의 다른 글
프로그래머스 - 자동차 평균 대여 기간 구하기 (ROUND, 날짜 차) (0) | 2023.03.03 |
---|---|
프로그래머스 - 특정 옵션이 포함된 자동차 리스트 구하기 (LIKE) (0) | 2023.03.03 |
프로그래머스 - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (IN) (0) | 2023.03.02 |
프로그래머스 - 자동차 대여 기록에서 장기/단기 대여 구분하기 (CASE) (0) | 2023.03.02 |
프로그래머스 - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (LIKE) (0) | 2023.03.02 |