[String, Date] 자동차 평균 대여 기간 구하기

쥬쥬스·2023년 11월 21일
0

SQL

목록 보기
62/67
post-thumbnail

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

💡 조건

  • 평균 대여 기간이 7일 이상
  • 평균 대여 기간은 소수점 두번째 자리에서 반올림
  • 평균 대여 기간 내림차순, 자동차 ID 내림차순

sql 코드

select car_id, round(avg(datediff(end_date,start_date)+1),1) as average_duration
from CAR_RENTAL_COMPANY_RENTAL_HISTORY h
group by car_id
having avg(datediff(end_date,start_date)+1)>=7
order by average_duration desc, car_id desc

1. 평균 대여 기간이 7일 이상

  1. 대여 기간을 datediff 사용해서 구해준다. 대여기간이기 때문에 당일까지 일수를 계산해서 +1을 해준다.
  2. 평균 대여 기간이므로 avg 함수를 사용하여 평균을 구한다.group by로 묶어줬기 때문에, 집계 함수를 having절에서 사용가능하다.
  3. 7일 이상 조건을 걸어준다.
from CAR_RENTAL_COMPANY_RENTAL_HISTORY h
group by car_id
having avg(datediff(end_date,start_date)+1)>=7

2. 평균 대여 기간 소수점 두번째 자리에서 반올림

  1. round를 사용해서 소수점 처리 해준다.
  2. 컬럼명은 정해준대로 alias를 사용해서 지정해준다.
select car_id, round(avg(datediff(end_date,start_date)+1),1) as average_duration

3. 정렬 기준

오름차순은 ASC, 내림차순은 DESC

order by average_duration desc, car_id desc
profile
느려도... 꾸준히.....🐌

0개의 댓글