특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
문제 출처
코딩테스트 연습 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 | 프로그래머스 스쿨 (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
오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.
'프로그래머스' 카테고리의 다른 글
(MySQL / 프로그래머스) 카테고리 별 도서 판매량 집계하기 (0) | 2023.09.22 |
---|---|
(MySQL / 프로그래머스) 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.09.22 |
(MySQL / 프로그래머스) 그룹별 조건에 맞는 식당 목록 출력하기 (3) | 2023.09.21 |
(MySQL / 프로그래머스) 5월 식품들의 총매출 조회하기 (0) | 2023.09.21 |
(MySQL / 프로그래머스) 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2023.09.21 |