사용 언어 - MYSQL
프로그래머스 LV 4) 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
정답
서브쿼리, JOIN절 (정답 맞춘 여부 X)
1. CAR_ID에 NOT IN 서브쿼리절
해당 날짜에 대여중일려면, START_DATE < 2022-11-01 < 2022-11-30 < END_DATE 여야 한다.
END_DATE > "2022-11-01" AND START_DATE < "2022-12-01"
2. CAR_ID로 그루핑 후, CAR_TYPE과 FEE 조건을 걸어준다.
3. FEE : 10% 할인 적용 = (100-10)/100 = *0.9
ROUND() 정수부분만 출력
+ 변수 타입이 원래 VARCHAR/DATE 이면, 형태변화없이 비교가 가능하다.
P.DURATION_TYPE = "30일 이상"
START_DATE < "2022-12-01"
SELECT A.CAR_ID, A.CAR_TYPE, ROUND(A.DAILY_FEE*30*(100-P.DISCOUNT_RATE)/100) AS FEE
FROM CAR_RENTAL_COMPANY_CAR AS A
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H ON A.CAR_ID = H.CAR_ID
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS P ON A.CAR_TYPE = P.CAR_TYPE
WHERE 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"
) AND P.DURATION_TYPE = '30일 이상'
GROUP BY A.CAR_ID
HAVING A.CAR_TYPE IN ('세단', 'SUV') AND (FEE >= 500000 AND FEE < 2000000)
ORDER BY FEE DESC, CAR_TYPE, CAR_ID DESC;
레퍼런스
- 정답 깃허브
'Stay Hungry Stay Foolish > SQL' 카테고리의 다른 글
[MYSQL] 상품을 구매한 회원 비율 구하기 (0) | 2023.10.04 |
---|---|
[MYSQL] 주문량이 많은 아이스크림들 조회하기 (0) | 2023.10.04 |
[MYSQL] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2023.07.27 |
[MYSQL] 오랜 기간 보호한 동물(1) (0) | 2023.06.30 |
[MYSQL] 있었는데요 없었습니다 (0) | 2023.06.30 |
댓글