본문 바로가기

코딩테스트 연습/프로그래머스(mySQL)

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

반응형

자동차 평균 대여 기간 구하기

테이블 : CAR_RENTAL_COMPANY_RENTAL_HISTORY

 

[프로그래머스] 테이블 CAR_RENTAL_COMPANY_RENTAL_HISTORY

테이블 CAR_RENTAL_COMPANY_RENTAL_HISTORY 어느 자동차 대여 회사의 자동차 대여 기록 정보 Column name Type Nullable Description Example HISTORY_ID INTEGER False 자동차 대여 기록 ID 1 CAR_ID INTEGER False 자동차 ID 1 START_DATE

komishs.tistory.com

728x90

문제

예시

반응형

최종구현

  1. 조건 : 평균 대여 기간이 7일 이상인 자동차(CAR_ID) 조회
    1. CAR_ID로 그룹화
    2. 각 그룹의 평균 대여 기간(AVERAGE_DURATION) >= 7 인 그룹 조회
      1. 대여 기간 : DATEDIFF(END_DATE, START_DATE) + 1
        1. 대여 기간(일 수)은 DATEDIFF(날짜1, 날짜2) = 날짜1 - 날짜2로 구할 수 있음
        2. START_DATE = END_DATE인 경우, DATEDIFF 결과값이 0이므로 +1 해줘야 함
        3. 평균 대여 기간을 구할 경우, 평균을 구한 후에 +1 해줘도 결과는 동일함
      2. AVERAGE_DURATION : 자동차별 평균 대여 기간(=AVG()), 소수점 두번째 자리에서 반올림(=ROUND(, 1))
  2. 정렬 : AVERAGE_DURATION(내림차순), CAR_ID(내림차순)
  3. 출력 : CAR_ID, AVERAGE_DURATION

제출 코드

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

 

반응형