한 걸음씩

[프로그래머스][MySQL] 자동차 평균 대여 기간 구하기 본문

Programmers

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

winter17 2023. 2. 21. 16:51

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

 

프로그래머스

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

programmers.co.kr

 

 정답 코드

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 AVG(DATEDIFF(END_DATE, START_DATE) + 1) >= 7 
# 대여 기간을 구하려면 +1해줘야하는 이유 : 9일날 빌려서 9일날 반납했다고 가정하면 1일동안 렌트한셈이니까
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;

전체 코드 해석 ▼

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서

CAR_ID 칼럼을 그룹화하고

END_DATE에서 START_DATE를 뺀 값에 + 1을 한 다음 평균을 낸 값이 7 이상인 경우

CAR_ID, AVERAGE_DURATION 칼럼을 출력하는데

AVERAGE_DURATION 기준으로 내림차순하고, 동일한 데이터가 있을 경우 CAR_ID 기준으로 내림차순으로 정렬해 줘

 

 

 체크 포인트

 

► DATEDIFF 함수

# 날짜1 - 날짜2
DATEDIFF(날짜1, 날짜2);

 

► TIMESTAMPDIFF 함수

# 날짜1 - 날짜2 = 해당하는 단위로 값을 표시
TIMESTAMPDIFF(단위, 날짜1, 날짜2)
단위 설명
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER 분기
YEAR