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

728x90

⬛ 프로그래머스 | LV.2 자동차 평균 대여 기간 구하기 (MySQL)

https://school.programmers.co.kr/learn/courses/30/lessons/157342

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명


💚문제 접근 방식

1) 날짜 차이 구하고 CAR_ID 기준으로 그룹핑 한 뒤, 추출한 값의 일수가 7일 이상인 경우만 추출한다.

       → 이때 DATEDIFF(날짜1, 날짜2) 를 활용할 건데, 날짜 차이 + 1을 해줘야 정상 답이 나온다.

🎈  DATEDIFF(ENDDATE, STARTDATE)+1 에서 +1값을 하는 이유 : 렌트 기간 구할 때 렌트 시작 날짜도 포함하기 떄문에 두 기간 차이값에서 +1 까지 처리해줘야 정확한 처리가 된다.

 

2) 추출한 애들의 평균은 AVG()함수로 구할 거고, 소수점 반올림자리 지정해준다.

       AVG(A, 1) ← 이거는 A에 대해 소수점 둘째 자리에서 반올림하여 첫째 차리까지 보이도록 지정한 거다.

3) ORDER BY 내림차순 DESC 정렬한다.


💚 제출 코드

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;

💚 배운 점 

AVG( ) 는 특정 필드 값들의 평균값을 계산해주는 함수

ROUNT( ) 는 특정 필드 값을 반올림해주는 함수

DATEDIFF(A,B)는 일 차이 가져올 때 활용하는 함수

 

 

728x90