알고리즘 문제/프로그래머스

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

우대비 2024. 10. 28. 22:47
반응형
 

프로그래머스

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

programmers.co.kr

CAR ID별 평균 자동차 대여 기간을 조회해주세요.

 

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

 

SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE) + 1), 1) AS AVERAGE_DURATION

  • CAR_ID: 렌트한 차량의 고유 식별자를 조회합니다.
  • DATEDIFF(END_DATE, START_DATE):
    • 차량 렌트의 **종료일(END_DATE)**과 시작일(START_DATE) 사이의 일 수 차이를 계산합니다.
  • +1: 시작일과 종료일 모두 포함하여 대여 기간을 계산합니다.
  • AVG(...): 각 차량의 평균 대여 기간을 구합니다.
  • ROUND(..., 1): 평균 값을 소수점 첫째 자리까지 반올림합니다.
  • AS AVERAGE_DURATION: 결과 열 이름을 **AVERAGE_DURATION**으로 표시합니다.

FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY

  • 이 데이터를 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 가져옵니다.

GROUP BY CAR_ID

  • 차량 ID(CAR_ID)별로 그룹화하여 각 차량의 평균 대여 기간을 계산합니다.

HAVING AVERAGE_DURATION >= 7

  • 평균 대여 기간이 7일 이상인 차량만 조회합니다.
    • HAVING은 GROUP BY로 그룹화한 데이터에 조건을 걸 때 사용합니다.

ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC

  • AVERAGE_DURATION(평균 대여 기간)이 높은 순(내림차순)으로 정렬합니다.
  • 만약 평균 대여 기간이 같을 경우, **CAR_ID**를 내림차순으로 정렬합니다.
반응형
LIST