본문 바로가기
코딩테스트/SQL 코테

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

by 코듀킹 2023. 8. 2.

정답쿼리

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

 

설명

날짜 차이를 어떻게 계산해야하는지 알아야 풀 수 있는 문제였다.

ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1)
DATEDIFF(시작 날짜, 마지막 날짜)

DATDIFF라는 함수에 시작 날짜와 마지막 날짜에 해당하는 Column을 넣어주면, 두 날짜간의 차이를 구할 수 있다.  여기에 +1을 해준 이유는 대여기간에 마지막 날짜까지 포함해야하기 때문에이다. 예를 들어 10월 1일 부터 10월 3일까지 대여 했다고 하면, DATEDIFF는 2이지만, 우리가 구하려고 하는 대여기간은 3이다. 

 

여기까지 작업을 마쳤으면, car_id를 GROUP BY로 묶어주고, 위 함수를 AVG로 계산하면, car_id에 따른 평균 대여기간을 구할 수 있다.

 

HAVING AVERAGE_DURATION >= 7

 

문제에서는 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간을 출력하라고 했으니, HAVING절을 통해 평균 대여기간이 7일 이상인 자동차를 조건으로 걸어준다.

 

마지막으로 ORDER BY로 정렬해주면 끝난다.

댓글