반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Homebrew
- 계정계
- 인강빨리듣기
- python
- 오라클
- 모놀리식
- 은행IT
- Pass By Value
- jdk
- 컴퓨터공학학사취득
- 개인프로필스튜디오창업
- DB
- 디렉토리계층구조
- 학점은행제
- 학점은행제무료강의
- 렌탈스튜디오창업
- 코어뱅킹
- 맥북환경설정
- it자격증
- 맥북셋팅
- 코딩테스트
- SQL
- MSA
- oracleapex
- 프로그래머스
- jdk17
- fastapi
- 채널계
- union
- 맥북
Archives
- Today
- Total
개발머해니
[프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 본문
728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/157339
정답
-- 코드를 입력하세요
SELECT AA.CAR_ID, BB.CAR_TYPE, BB.FEE FROM
(
SELECT
B.CAR_ID CAR_ID,
MAX(START_DATE) START_DATE2,
MAX(END_DATE) END_DATE2
FROM
CAR_RENTAL_COMPANY_CAR A,
CAR_RENTAL_COMPANY_RENTAL_HISTORY B
WHERE 1=1
AND A.CAR_ID = B.CAR_ID
GROUP BY B.CAR_ID
) AA
,(
SELECT
A.CAR_ID AS CAR_ID
,A.CAR_TYPE AS CAR_TYPE
,(A.DAILY_FEE * (1-B.DISCOUNT_RATE*0.01) * 30) AS FEE
FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_DISCOUNT_PLAN B
WHERE 1=1
AND A.CAR_TYPE = B.CAR_TYPE
AND A.CAR_TYPE IN ('세단', 'SUV')
AND B.DURATION_TYPE = '30일 이상'
) BB
WHERE 1=1
AND AA.CAR_ID = BB.CAR_ID
AND ( AA.START_DATE2 > TO_DATE('20221130', 'YYYYMMDD')
OR AA.END_DATE2 < TO_DATE('20221101', 'YYYYMMDD') )
AND BB.FEE >= 500000 AND BB.FEE < 2000000
ORDER BY FEE DESC, CAR_TYPE, CAR_ID DESC
;
결과
CAR_ID | CAR_TYPE | FEE |
3 | 세단 | 1518000 |
23 | 세단 | 1380000 |
풀이
아래 두 테이블을 JOIN하면 되는 문제이다.
1. 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능한 차동차 구하기
SELECT * FROM
(
SELECT
B.CAR_ID CAR_ID,
MAX(START_DATE) START_DATE2,
MAX(END_DATE) END_DATE2
FROM
CAR_RENTAL_COMPANY_CAR A,
CAR_RENTAL_COMPANY_RENTAL_HISTORY B
WHERE 1=1
AND A.CAR_ID = B.CAR_ID
AND A.CAR_TYPE IN ('세단', 'SUV')
GROUP BY B.CAR_ID
) AA
WHERE 1=1
AND ( AA.START_DATE2 > TO_DATE('20221130', 'YYYYMMDD')
OR AA.END_DATE2 < TO_DATE('20221101', 'YYYYMMDD') )
;
2. 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차 구하기
SELECT * FROM
(
SELECT
A.CAR_ID AS CAR_ID
,A.CAR_TYPE AS CAR_TYPE
,(A.DAILY_FEE * (1-B.DISCOUNT_RATE*0.01) * 30) AS FEE
FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_DISCOUNT_PLAN B
WHERE 1=1
AND A.CAR_TYPE = B.CAR_TYPE
AND A.CAR_TYPE IN ('세단', 'SUV')
AND B.DURATION_TYPE = '30일 이상'
) BB
WHERE 1=1
AND BB.FEE >= 500000 AND BB.FEE < 2000000
;
728x90
반응형
'SQL' 카테고리의 다른 글
오라클 설치할 수 없을 때 : Oracle Apex (0) | 2024.06.11 |
---|---|
[프로그래머스] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.01.09 |
[프로그래머스] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2024.01.08 |