[프로그래머스 / SQL] 자동차 평균 대여 기간 구하기

Dreamer·2025년 6월 10일

문제

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

나의 풀이

  1. 첫번째 풀이 : GROUP BY + HAVING
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

바로 쿼리문 작성 실패 - 원인 파악
1. 복잡하게 생각해서 서브쿼리로 접근
간단한 GROUP BY + HAVING으로 해결 가능한 문제였는데 과도하게 복잡화
2.⭐ WHERE는 그룹화 전 개별 행 필터링 , HAVING은 그룹화 후 그룹 조건 필터링

profile
Moving forward based on records

0개의 댓글