일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 코딩테스트문제풀이
- 코딩테스트
- mysql
- sql강의
- shp
- 코테문제풀이
- WSL
- Python
- 패스트캠퍼스데이터분석부트캠프
- qgis
- 학습일지
- 아나콘다
- bigquery
- K디지털기초역량훈련
- 패스트캠퍼스
- SQL
- 데이터분석취업
- 국비지원
- 데이터분석가
- 국비지원취업
- 국비지원교육
- 코딩연습
- 패스트캠퍼스부트캠프
- Programmers
- 데이터분석
- 부트캠프
- 내일배움카드
- 프로그래머스
- 패스트캠퍼스기자단
- 데이터분석부트캠프
- Today
- Total
데이터 리터러시를 위한 발자취
[프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 본문
특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
문제
자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.
예시
문제풀이
접근방식은 아래와 같이 정리하여 진행했습니다.
1. 테이블 조인
- CAR_RENTAL_COMPANY_CAR, CAR_RENTAL_COMPANY_RENTAL_HISTORY, CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 간 Join 수행
2. 세단/SUV인 자동차 및 대여기간 30일 이상 조건 조회
- WHERE절 기반 자동차 종류가 '세단' 또는 'SUV' 인 자동차 조건 출력
- DURATION_TYPE이 '30일 이상'인 조건 출력
3. HAVING절 기반 대여금액 50만원~200만원 미만인 자동차 조회
4. FEE 계산
- 일일 대여 요금에 자동차 종류 별 대여기간이 30일 이상인 경우의 할인율을 적용
- 정수 부분만 출력되도록 ROUND 함수 사용
5. 결과는 아래 조건에 맞게 설정
- 대여 금액을 기준으로 내림차순 정렬
- 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬
- 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬
제출 코드
# 정답코드
SELECT R.CAR_ID, R.CAR_TYPE,
ROUND(R.DAILY_FEE * (100 - D.DISCOUNT_RATE)/100*30,0) AS FEE
FROM CAR_RENTAL_COMPANY_CAR R
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H ON R.CAR_ID = H.CAR_ID
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN D ON R.CAR_TYPE = D.CAR_TYPE
WHERE R.CAR_TYPE IN ('세단','SUV')
AND D.DURATION_TYPE ='30일 이상'
GROUP BY R.CAR_ID
HAVING (MAX(END_DATE) < '2022-11-01') AND FEE BETWEEN 500000 AND 2000000
ORDER BY FEE DESC, R.CAR_TYPE ASC, R.CAR_ID DESC;
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'데이터 분석 > SQL' 카테고리의 다른 글
[BigQuery & MySQL] Json 컬럼 출력하기 (2) | 2024.01.13 |
---|---|
[HackerRank] Ollivander's Inventory (2) | 2023.12.26 |
[프로그래머스] 코딩테스트 연습 - 우유와 요거트가 담긴 장바구니 (0) | 2023.09.22 |
[프로그래머스] 코딩테스트 연습 - 헤비 유저가 소유한 장소 (0) | 2023.09.21 |
[패스트캠퍼스] SQL 강의 학습후기 5주차 (0) | 2023.06.24 |