Lv2 - 자동차 평균 대여 기간 구하기

2025. 7. 29. 15:17·CODING TEST/MySQL

📌 문제 정보

- 문제 이름 : 프로그래머스 - (String, Date) 자동차 평균 대여 기간 구하기

- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/157342

 

 

 

📌 문제 요약

- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블 : HISTORY_ID, CAR_ID, START_DATE, END_DATE

- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.

 

예시)

HISTORY_ID  CAR_ID  START_DATE  END_DATE
1 1 2022-09-27 2022-10-01
2 1 2022-10-03 2022-11-04
3 2 2022-09-05 2022-09-05
4 2 2022-09-08 2022-09-10
5 3 2022-09-16 2022-10-15
6 1 2022-11-07 2022-12-06

- 자동차 ID = 1 : 대여기간 5, 33, 30일인 기록 존재 => 평균 22.7일

- 자동차 ID = 2 : 대여기간 1, 3 => 평균 2

- 자동차 ID = 3 : 대여기간 30  => 평균 30

=> 대여기간 7일 이상인 자동차는 1, 3 / 평균 대여 기간 내림차순 및 자동차 ID를 기준으로 DESC

 

출력)

CAR_ID  AVERAGE_DURATION
3 30.0
1 22.7

 

 

 

📌 내 풀이 및 코드

SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE) + 1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING ROUND(AVG(DATEDIFF(END_DATE, START_DATE) + 1), 1) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;

- +1을 해야하는 이유를 몰랐음. (예를 들어 9/1 ~ 9/1도 1일 대여이기 때문에. (시작일 포함))

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** DATEDIFF() **

- DATEDIFF(끝나는날짜, 시작날짜) : 두 날짜 사이의 일 수 차이를 계산해주는 함수

- 주의할 점 : SELECT DATEDIFF('2024-07-01', '2024-07-01'); -- 결과: 0처럼 하루 대여인데 0이 나와서 +1를 꼭 해야함.

- 따라서 실제 사용 기간을 구하려면 DATEDIFF(...) + 1 하는 게 일반적

'CODING TEST > MySQL' 카테고리의 다른 글

Lv2 - 조건에 맞는 개발자 찾기  (0) 2025.07.30
Lv2 - 업그레이드 된 아이템 구하기  (0) 2025.07.30
Lv2 - ROOT 아이템 구하기  (0) 2025.07.29
Lv2 - 가격대 별 상품 개수 구하기  (0) 2025.07.29
Lv2- 연도 별 평균 미세먼지 농도 조회하기  (0) 2025.07.29
'CODING TEST/MySQL' 카테고리의 다른 글
  • Lv2 - 조건에 맞는 개발자 찾기
  • Lv2 - 업그레이드 된 아이템 구하기
  • Lv2 - ROOT 아이템 구하기
  • Lv2 - 가격대 별 상품 개수 구하기
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    회고
    토익 스피킹
    SQL
    COS Pro
    java
    baekjoon
    우리fisa
    우리 fisa
    프로그래머스
    Programmers
    CLF-C02
    클라우드서비스개발
    감행
    우리fis아카데미
    백준
    프로젝트 리팩토링
    AWS Certified Cloud Practitioner
    toeic speaking
    AWS Certification
    회고록
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
Lv2 - 자동차 평균 대여 기간 구하기
상단으로

티스토리툴바