SQL 문제

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

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

 

-- 코드를 입력하세요
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 + 1) >= 7
ORDER BY
    AVERAGE_DURATION DESC, CAR_ID DESC

쿼리 진행 순서

  1. FROM절에서 CAR_RENTAL_COMPANY_RANTAL_HISTORY를 선택
  2. CAR_ID별로 출력을 해야하므로 GROUP BY CAR_ID
  3. 그룹화 된 CAR_ID에 대하여 평균 대여 기간이 7일 이상이므로 HAVING절에 조건 서술
  4. END_DATE =  START_DATE인 경우에도 대여 기간이 1이므로 AVERAGE_DURATION+1을 해준다.
  5. SELECT절에서 CAR_ID, AVERAGE_DURATION을 조회

같은 날에 빌려도 대여 기간이 1일이다.

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