본문 바로가기
알고리즘 공부/sql

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

by 지금갑시다 2024. 2. 20.

 

 

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

쉽지 않았습니다.. 이유로는

 

1. 조건에 맞는 row가 여러개 있었고, 겹치는 대상이 되었음

2. date의 차이를 계산하는 법

3. 평균값을 소수점 2번째에서 반올림

 

을 어떻게 구현해야 할 지 몰랐기 때문입니다,,

 

해결방법

1. group by having 을 이용해 조건에 맞는 쿼리 생성!

2. datediff(끝나는 date, 시작한 date) 가 바로 date 차이를 구하는 함수

3. round(계산하는 값, 1) 로 하면, 소수점 1의 자리까지 반올림 된 값을 구해줌!

 

정답

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 avg(datediff(end_date, start_date)+1) >= 7

order by average_duration desc, car_id desc