Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 자동차 평균 대여 기간 구하기 (MySQL) 본문

DB/프로그래머스(MySQL)

[프로그래머스] - 자동차 평균 대여 기간 구하기 (MySQL)

luke-king 2025. 10. 16. 20:07

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

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

풀이.


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 AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC

이번 문제는 프로그래머스 "자동차 평균 대여 기간 구하기" MySQL 문제다.

평균 대여 기간을 구해야 하는데 START_DATE, END_DATE 사이의 날짜 차이를 알면 푸는데 크게 어려움 없을 거 같다.

그럼 바로 풀이해보겠다.

 

1. 우선 날짜 차이를 구하기 위해서 우리는 DATEDIFF()라는 함수를 사용해준다. 이 함수를 쉽게 말하면 큰 숫자에서 작은 수를 뺀다고 생각하면 될 거 같다.

 

2. 날짜 차이를 구해줬으면 평균을 구하기 위해 AVG() 함수를 DATEDIFF() 함수 밖에서 감싸준다. 여기서 중요한 건 우리가 +1을 해줘야 하는데 그 이유는 렌트 한 마지막 날까지 포함시켜야 하기 때문이다.

 

3. 다음으로 ROUND 함수를 사용해서 소수점 1 자릿수만 출력되게 해 주면 문제에서 원하는 평균값 설정이 완료된 거다.

 

4. CAR_ID를 그룹으로 지정해주고 문제에 평균일 수가 7일 이상인 값들을 출력해야 하니 HAVING 절로 조건 식을 만들어 준다.

 

5. 마지막으로 내림 차순으로 정렬해주면 끝이다.