loading

새소식

CodingTest/Programmers

[프로그래머스/Lv2️⃣] 자동차 평균 대여 기간 구하기 (문제 해설 및 풀이)

  • -
728x90
반응형

 

 

 

 

Lv2️⃣ 자동차 평균 대여 기간 구하기

 

 

 

 

 

 

📝  문제 설명

 

다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.

 

 

 

🔖 예시

 

CAR_RENTAL_COMPANY_RENTAL_HISTORY

 

 

❓ 문제

 

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.

 

 

 

🎯 풀이 

 

1) MySQL

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 2 DESC, 1 DESC;

 

🍀 DATEDIFF(A, B) : 날짜 A 와 날짜 B 의 일 수 차이

=> 날짜A 와 날짜B 가 서로 같을 경우 차이가 0으로 출력되기 때문에 +1 을 해 주었다.

 

⭐ TIMESTAMPDIFF(구분자, A, B)

 => 구분자 : yy(년도), qq(분기), mm(월), dd(일), m(시간), mi(분), ss(초) 등 단위 설정 가능

 

🍀AVG() : 평균 구하는 함수

🍀Round() : 반올림 구하는 함수 

 

 

 

2) Oracle

SELECT CAR_ID,
ROUND(AVG(END_DATE - START_DATE+1),1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING ROUND(AVG(END_DATE - START_DATE+1),1) >= 7
ORDER BY ROUND(AVG(END_DATE - START_DATE+1),1) DESC, CAR_ID DESC;

 

 

 

 

 

 

 

💡 출력 결과

 

.

 

 

 

 

 

 


 

 

 

728x90
반응형
Contents

📝 포스팅 주소를 복사했습니다 📝

이 글이 도움이 되었다면 공감 부탁드립니다👍