DB

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

staktree 2023. 11. 30. 11:48

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
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;

 

CAR_ID로 GROUP BY하여 해당 자동차의 평균 대여 기간을 구하고, 7일이 넘을 경우에 CAR_ID와 평균 대여 기간을 소수점 2번째 자리에서 반올림한 값을 출력하는 문제입니다. 

대여기간을 구할 때 시작 날짜를 포함해야함으로 DATEDIFF(END_DATE, START_DATE)한 값에 1을 더해주어야합니다. 

GROUP BY를 사용했기 때문에 HAVING을 이용해 조건을 검색해야합니다. 

내림차순 정렬을 위해 DESC를 사용합니다. 

 

정보 : 

1. ROUND(숫자, 자릿수)

숫자의 자릿수 + 1한 위치에서 반올림한 값을 출력합니다.

 

2. DATEDIFF(날짜1, 날짜2)

날짜2에서 날짜1을 뺏을 때 몇일이 되는지를 구하는 함수입니다. 

 

3. GROUP BY

테이블에서 공통된 속성값을 갖는 것들끼리 묶는 명령어입니다. 

자동차 ID별로 대여기간의 평균을 구해야함으로 같은 자동차 ID를 갖는 데이터를 묶어줍니다. 

GROUP BY를 사용할 때는 WHERE 대신 HAVING을 사용해야합니다.