일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- CodingTest
- 연습문제
- join
- import re
- lambda
- itertools
- Level2
- 파이썬
- coding
- sql
- time complexity
- coding test
- collections
- 코딩
- level4
- counter
- 완전탐색
- 코테
- Queue
- BFS
- 조합
- 프로그래머스
- Stack
- 코딩테스트
- python
- mysql
- programmers
- 시간복잡도
- 데이터분석
- lv4
- Today
- Total
ror_coding
[Programmers Lv.4] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - 157339 본문
Algorithm/SQL
[Programmers Lv.4] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - 157339
ro_rdil_31 2025. 1. 12. 14:21728x90
여러 ID로 출력될 때 단순 DISTINCT만 하는 것이 아닌, 제외해야 할 날짜를 가진 ID를 걸러내기 위해 SUB QUERY를 사용하여 WHERE절에서 NOT IN으로 필터링하기!
Question
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를 기준으로 내림차순 정렬해주세요.
Code
SELECT DISTINCT C.CAR_ID, C.CAR_TYPE, FLOOR(30*DAILY_FEE*(1 - 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 D
ON C.CAR_TYPE = D.CAR_TYPE AND
D.DURATION_TYPE = '30일 이상'
WHERE C.CAR_TYPE IN ('세단', 'SUV')
AND C.CAR_ID NOT IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE NOT (END_DATE < '2022-11-01' OR
'2022-11-30' < START_DATE))
HAVING FEE BETWEEN 500000 AND 2000000-1
ORDER BY 3 DESC, 2, 1 DESC;
now me
On my github
728x90
'Algorithm > SQL' 카테고리의 다른 글
[Programmers Lv.5] 상품을 구매한 회원 비율 구하기 - 131534 (0) | 2025.01.16 |
---|---|
[Programmers Lv.4] 언어별 개발자 분류하기 - 276036 (0) | 2025.01.12 |
[Programmers Lv.4] FrontEnd 개발자 찾기 - 276035 (0) | 2025.01.12 |
[Programmers Lv.4] 자동차 대여 기록 별 대여 금액 구하기 - 151141 (0) | 2025.01.05 |
[Programmers Lv.4] 특정 세대의 대장균 찾기 - 301650 (0) | 2025.01.04 |