반응형
1. 문제
CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.
*문제 원본은 '문제링크' 참고
2. 학습 내용
1) LEFT JOIN 이용한 데이터 조회
*사용 이유: 모든 레코드 포함하면서, 해당하는 조인 조건에 맞는 레코드만 추출하기 위함
2) CAST 이용한 type 변경
🔎 3. 작성 코드
-- 코드를 입력하세요
SELECT
C.CAR_ID,
C.CAR_TYPE,
CAST(C.DAILY_FEE * (1 - COALESCE(D.DISCOUNT_RATE, 0) / 100) * 30 AS UNSIGNED) AS FEE
FROM
CAR_RENTAL_COMPANY_CAR C
LEFT JOIN
CAR_RENTAL_COMPANY_DISCOUNT_PLAN D ON C.CAR_TYPE = D.CAR_TYPE
AND D.DURATION_TYPE = '30일 이상'
LEFT JOIN
CAR_RENTAL_COMPANY_RENTAL_HISTORY H ON C.CAR_ID = H.CAR_ID
AND H.START_DATE <= '2022-11-30' AND H.END_DATE >= '2022-11-01'
WHERE
(C.CAR_TYPE = '세단' OR C.CAR_TYPE = 'SUV')
AND H.HISTORY_ID IS NULL
AND CAST(C.DAILY_FEE * (1 - COALESCE(D.DISCOUNT_RATE, 0) / 100) * 30 AS UNSIGNED) >= 500000
AND CAST(C.DAILY_FEE * (1 - COALESCE(D.DISCOUNT_RATE, 0) / 100) * 30 AS UNSIGNED) < 2000000
ORDER BY
FEE DESC,
C.CAR_TYPE ASC,
C.CAR_ID DESC;
반응형
'프로그래머스' 카테고리의 다른 글
코딩테스트 입문 - 평행 (0) | 2023.05.24 |
---|---|
SQL - 상품을 구매한 회원 비율 구하기_JOIN (0) | 2023.05.24 |
코딩테스트 입문 - 옹알이_JAVA (0) | 2023.05.19 |
SQL - 보호소에서 중성화한 동물_JOIN (0) | 2023.05.19 |
SQL - 오프라인/온라인 판매 데이터 통합하기_SELCT (0) | 2023.05.19 |