알고리즘/SQL
[프로그래머스] 자동차 평균 대여 기간 구하기
Noaahhh
2024. 9. 18. 23:52
Question
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.
Pseudocode
- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 CAR_ID별로 그룹화.
- 각 CAR_ID에 대해, START_DATE와 END_DATE 사이의 날짜 차이를 계산하고, 하루를 추가하여 대여 기간(DATEDIFF(END_DATE, START_DATE) + 1)을 구함.
- 이 대여 기간의 평균을 계산하고 소수점 첫째 자리까지 반올림하여 AVERAGE_DURATION으로 표시.
- AVERAGE_DURATION이 7일 이상인 CAR_ID만 필터링.
- AVERAGE_DURATION을 기준으로 내림차순으로 정렬하고, CAR_ID를 기준으로 내림차순으로 추가 정렬하여 결과를 반환.
Code
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