<CAR_RENTAL_COMPANY_RENTAL_HISTORY> 테이블 구조
<문제>
<문제 풀이>
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;
AVERAGE_DURATION 을 계산하는 부분이 가장 어려운 부분이었다.
DATEDIFF() 함수로 기간을 구한 후 1일을 더한 후 평균을 구해야 한다. (두 날짜 사이의 값을 구하기 때문에 1을 더하여 기간을 구해야한다!!)
그 후 각 CAR_ID 별 평균을 구해주고, 문제에서 요구하는 소수 점 2번째 자리에서 반올림 하면 첫번째 자리이기 때문에 round 함수에 1을 넣어 줘야한다.
* DATEDIFF( end_date, start_date) = 두 날짜 사이의 기간
DATEDIFF( hour, start_date, end_date) = 두 날짜 사이의 기간을 앞에 단위로 표현
'IT > SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 - 오랜 기간 보호한 동물(1) (0) | 2024.01.20 |
---|---|
[MySQL] 프로그래머스 - 카테고리 별 도서 판매량 집계하기 (0) | 2024.01.20 |
[MySQL] 프로그래머스 - 조건에 부합하는 중고거래 상태 조회하기 (0) | 2024.01.18 |
[MySQL] 프로그래머스 - 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.01.18 |
[MySQL] 프로그래머스 - 가격대 별 상품 개수 구하기 (0) | 2024.01.18 |