-
[프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 MYSQLCoding Test/programmers 2023. 9. 19. 14:36728x90
문제 설명
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를 기준으로 내림차순 정렬해주세요.
풀이
테이블 3개를 join해서 푸는 문제입니다.
-- 코드를 입력하세요 SELECT c.CAR_ID, c.CAR_TYPE, ROUND(c.DAILY_FEE * 30*(100-p.DISCOUNT_RATE) / 100) 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_ID NOT IN( SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE END_DATE > '2022-11-01' AND START_DATE < '2022-12-01' )AND p.DURATION_TYPE = '30일 이상' GROUP BY c.CAR_ID HAVING c.CAR_TYPE IN ('세단', 'SUV') AND (FEE>=500000 AND FEE < 2000000) ORDER BY FEE DESC, CAR_TYPE, CAR_ID DESC
조건이 까다로운 문제여서 아래 블로그 설명을 참고하였습니다.
728x90'Coding Test > programmers' 카테고리의 다른 글
[프로그래머스] 행렬과 연산 c++ (0) 2023.10.20 [프로그래머스] 광물 캐기 c++ (0) 2023.10.13 [프로그래머스] 3월에 태어난 여성 회원 목록 출력하기 MySQL (1) 2023.09.19 [프로그래머스] 인기있는 아이스크림 MySQL (0) 2023.09.19 [프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 MySQL (0) 2023.09.19