[SQL] 20240224

김예지·2024년 2월 24일

SQL 풀이

목록 보기
25/26
post-thumbnail

*프로그래머스 SQL 문제 풀이입니다.


문제 1: 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

📃 문제 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를 기준으로 내림차순 정렬해주세요.

🔎 풀이 포인트

  • 조건: 자동차 종류가 '세단', 'SUV'인 자동차 중 2022년 11월 1일~2022년 11월 30일까지 대여 가능, 30일 간의 대여 금액이 50만원 ~ 199만원인 자동차 조회
  • 정렬: 대여 금액 기준 내림차순, 자동차 종류 기준 오름차순, 자동차ID 기준 내림차순
  • OUTPUT COLUMNS: 자동차ID, 자동차 종류, 대여 금액

제출 답안

SELECT C.CAR_ID, C.CAR_TYPE, (C.DAILY_FEE * ((100 - D.DISCOUNT_RATE) / 100 )) * 30 AS FEE
FROM (
	SELECT A.CAR_ID, A.CAR_TYPE, A.DAILY_FEE
	FROM CAR_RENTAL_COMPANY_CAR A
	WHERE A.CAR_ID NOT IN (
		SELECT CAR_ID
		FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
		WHERE TO_CHAR(START_DATE, 'YYYYMMDD') <= '20221130' AND TO_CHAR(END_DATE, 'YYYYMMDD') >= '20221101'
	)
	AND A.CAR_TYPE IN ('세단', 'SUV')
) C, CAR_RENTAL_COMPANY_DISCOUNT_PLAN D
WHERE C.CAR_TYPE = D.CAR_TYPE
AND D.DURATION_TYPE LIKE '30%'
AND (C.DAILY_FEE * ((100 - D.DISCOUNT_RATE) / 100)) * 30 BETWEEN 500000 AND 2000000
ORDER BY FEE DESC, C.CAR_TYPE, C.CAR_ID DESC; 

profile
넓고 얕게? 좁고 깊게?

0개의 댓글