기본 group by 및 having 절을 사용하는 데 문제가 있었습니다.
다른 부분은 비교적 쉽지만 AVERAGE_DURATION을 생성하는 부분은 혼란스러울 수 있습니다.
먼저 DATEDIFF 함수를 사용하여 END_DATE와 START_DATE의 차이를 확인할 수 있습니다.
그러나 말 그대로 차이 값이므로 END_DATE와 START_DATE가 같으면 결과 값은 0입니다.
대여 기간을 구하고 있기 때문에 두 값이 같으면 1의 값을 얻어야 합니다.
따라서 DATEDIFF에서 얻은 결과에 +1을 더해야 합니다.
그리고 CAR_ID별로 그룹화하기 때문에 각 열에 대한 DATEDIFF 값의 평균을 찾아야 합니다.
이는 avg 함수를 사용하여 결정할 수 있습니다.
이때 소수점 둘째 자리까지 반올림해야 하기 때문에 이 문제를 해결하기 위해 반올림 함수를 사용한다.
select CAR_ID, round(avg(DATEDIFF(END_DATE, START_DATE) + 1), 1) AVERAGE_DURATION
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
group by CAR_ID
having AVERAGE_DURATION >= 7
order by AVERAGE_DURATION desc, CAR_ID desc