문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

해설

복잡하게 푸는 방법이 있고 적당히 잘 하나의 쿼리로 처리하는 방법이 있습니다.

둘 중 어떤게 더 성능상 유리하다고 말씀드리긴 어렵지만 저는 GROUP BY 를 사용해서 풀이를 했습니다.

서브쿼리를 이용해도 가능해보입니다.

 

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;

날짜의 기간을 계산하는 쿼리에는 DATE_DIFF 가 있습니다. 이걸 사용하실때 주의할 점은 정확한 기간차이를 구할때는 반드시 +1을 해줘야 한다는 점입니다.

이거 때문에 좀 고생한 문제가 있었습니다.

반응형