https://school.programmers.co.kr/learn/courses/30/lessons/157339
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
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를 기준으로 내림차순 정렬해주세요.
풀이
SELECT
C.CAR_ID,
C.CAR_TYPE,
ROUND(C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE / 100)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR C
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN P
ON C.CAR_TYPE = P.CAR_TYPE
AND P.DURATION_TYPE = '30일 이상'
WHERE C.CAR_TYPE IN ('세단', 'SUV')
AND NOT EXISTS (
SELECT 1
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY H
WHERE H.CAR_ID = C.CAR_ID
AND H.END_DATE >= '2022-11-01'
AND H.START_DATE <= '2022-11-30'
)
GROUP BY C.CAR_ID, C.CAR_TYPE, FEE
HAVING FEE >= 500000 AND FEE < 2000000
ORDER BY FEE DESC, C.CAR_TYPE ASC, C.CAR_ID DESC;
'코딩 테스트 > SQL' 카테고리의 다른 글
| [프로그래머스 - LEVEL 1] 과일로 만든 아이스크림 고르기 (0) | 2026.02.11 |
|---|---|
| [프로그래머스 - LEVEL 1] 2세 이하인 여자 환자 목록 출력하기 (0) | 2026.02.11 |
| [프로그래머스 - LEVEL 1] 조건에 맞는 도서 리스트 출력하기 (0) | 2026.02.11 |
| [프로그래머스 - LEVEL 1] 인기있는 아이스크림 (0) | 2026.02.11 |
| [프로그래머스 - LEVEL 1] 평균 일일 대여 요금 구하기 (0) | 2026.02.11 |