본문 바로가기

프로그래머스

(MySQL / 프로그래머스) 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

728x90
반응형
SMALL


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


 



문제 출처

코딩테스트 연습 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr



Code

SELECT A.CAR_ID, A.CAR_TYPE, ROUND(A.DAILY_FEE * 30 * (100-B.DISCOUNT_RATE)/100,0) AS FEE
FROM CAR_RENTAL_COMPANY_CAR A
    JOIN (SELECT * 
          FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN 
          WHERE DURATION_TYPE = '30일 이상') B ON A.CAR_TYPE = B.CAR_TYPE
WHERE A.CAR_TYPE IN ("세단","SUV")
    AND A.CAR_ID NOT IN (SELECT CAR_ID 
                        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
                        WHERE END_DATE >= '2022-11-01' AND START_DATE < '2022-12-01')
GROUP BY A.CAR_ID
HAVING FEE BETWEEN 500000 AND 2000000
ORDER BY FEE DESC, CAR_TYPE ASC, CAR_ID DESC


#CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 
#---> FROM에 나올 3개의 테이블을 설명해주고있다

#자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 
#---> 1번째 조건을 설명해주고있다

#2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 
#---> 2번째 조건을 설명해주고있다

#30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 
#---> 3번째 조건을 설명해주고있다

#자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력
#---> SELECT문을 설명해주고있다

#결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.
#---> 정렬방법을 설명해주고있다


Code설명 & TIPS


풀이 방법!

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 

---> FROM에 나올 3개의 테이블을 설명해주고있다

 

자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 

---> 1번째 조건을 설명해주고있다

 

2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 

---> 2번째 조건을 설명해주고있다

 

30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 

---> 3번째 조건을 설명해주고있다

 

자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력

---> SELECT문을 설명해주고있다

 

결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.

---> 정렬방법을 설명해주고있다

 


설명!

정말 귀찮은 문제였다 (3개의 테이블을 합치는거니)

 

여기서 중요한 점은 조건문 작성이다

 

위에 문제 분석처럼 조건이 뭔지 파악 후 각테이블 마다 중복된 컬럼끼리 조건을 걸어주게 되었다.

 

날짜도 사이 값을 구하여서 잘 넣어줘야한다 (OR로 써서 계속 틀렸음)

 

그리고 3번째 조건에서 사실 200만원 미만이니 BETWEEN 50만 AND 1999999 이렇게 해야지 맞는건데

 

그냥 200 하니 맞았다(여기서 디테일이 살짝 떨어져서 실망)

 

나머지는 조건만 잘 파악하고 그룹화만 잘 시킨다면 어렵지 않은 문제인듯하다(복잡하긴함)

 

 

 

 

 

 

티스토리와 깃허브 홈
 

학스의 개발일지

안녕하세요 일상과 코딩공부를 올리고 있는 JAVA개발자 학스입니다. 저는 주로 JAVA, jQuery, PostgreSQL, HIVE을 다루고 있고 코딩테스트공부도 병행중입니다. 제 깃허브 주소인 https://github.com/hacs2772에

hacs2772.tistory.com

 

 

hacs2772 - Overview

개발왕 학스. hacs2772 has 8 repositories available. Follow their code on GitHub.

github.com

 

 

오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.

 

 

 

 

728x90
반응형
LIST