본문 바로가기
코딩테스트/프로그래머스

(MySQL LEVEL-2) 자동차 평균 대여 기간 구하기 - 프로그래머스

by 고구마는호박고구마 2023. 5. 11.

이 테이블에서 CAR_ID 별로 평균 대여일이 7일 이상인 CAR_ID를 대여일이 내림차순으로 출력하고 대여일이 같은게 있다면 CAR_ID를 내림차순으로 출력해라

 


이 문제를 풀기 앞서 알아야 하는 함수

 

DATEDIFF( 날짜, 날짜 ) 두 날짜사이의 일 수를 계산 

ROUND( 숫자, 숫자위치) 숫자의 어느지점에서 반올림을 할 지 뒤에 숫자를 적는다.

SUM 합 GROUP으로 묶은 합 (집계함수)

COUNT 갯수  GROUP으로 묶은 개수 (집계함수)

 

 

SELECT CAR_ID,ROUND(SUM(DATEDIFF(END_DATE, START_DATE)+1)/COUNT(END_DATE),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;

해설

 

1. 그룹으로 묶어 날짜를 계산한다.

 1-1  DATEDIFF 함수를 통하여 끝날자와 시작날자의 차이 계산 9월1일 9월1일 까지 이면 0이 나오지만 하루 빌린거기에 1을 추가

 1-2 COUNT 함수를 통하여 몇번 빌렸는지 

 1-3 ROUND 함수를 통하여 소수점이 나오면 소수점1 위치에서 반올림

 1-4 이렇게 계산된 컬럼의 이름을 AVERAGE_DURATION로 설정

2. HAVING 으로 7일이상인것만 예외 처리

3. 정렬을 AVERAGE_DURATION 내림차순 , 같다면 CAR_ID 내림차순

 

실행결과

 

댓글