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

2025. 1. 9. 23:34·SQL

`★복습하기`

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

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


💡 문제 풀이 

`내 풀이` 

SELECT c.CAR_ID, 
    c.CAR_TYPE, 
    ROUND(c.DAILY_FEE*30*(1-d.DISCOUNT_RATE/100)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR c
LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY h ON c.CAR_ID = h.CAR_ID
LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN d ON c.CAR_TYPE = d.CAR_TYPE AND d.DURATION_TYPE = '30일 이상'
WHERE c.CAR_TYPE IN ('SUV', '세단')
GROUP BY c.CAR_ID, c.CAR_TYPE
HAVING (MIN(h.START_DATE) > '2022-11-30' OR MAX(h.END_DATE) < '2022-11-01')
    AND (FEE >= 500000 AND FEE < 2000000);

 

`오답노트`

  • 30일간 대여할거니까 30일일 때의 할인율만 골라서 가져오면 되는데 문제를 이해 못 해서 한참 뻘짓함
  • LEFT JOIN하면서 ON조건절에 일치하는 컬럼말고도 DURATION_TYPE = '30일 이상'인 것만 추려서 가져오게 정할 수 있음
'SQL' 카테고리의 다른 글
  • MySQL 실습 | 상품을 구매한 회원 비율 구하기
  • MySQL 실습 | 자동차 대여 기록 별 대여 금액 구하기
  • MySQL 실습 | 입양 시각 구하기 (재귀구조 with recursive)
  • MySQL 실습 | 조건에 부합하는 중고거래 댓글 조회하기
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
MySQL 실습 | 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
상단으로

티스토리툴바