SQL 문제

문제 63. 자동차 평균 대여 기간 구하기(난이도 5)

kagan-draca 2024. 7. 30. 16:10

 

일단 CAR_ID의 대여 평균일을 구해야 하기 때문에,

GROUP BY CAR_ID

로 각각의 CAR_ID에 해당하는 구룹 테이블을 만들어줬다.

 

그 후, 평균 7일 이상 인 자동차만 조회 되도록 해야하는데

 

처음에는 WHERE에

WHERE ROUND(AVG(DATEDIFF(SUBSTRING(END_DATE,1,11), SUBSTRING(START_DATE,1,11)) + 1),1)  >= 7

로 구현했었다.

 

그런데, 오류가 나서 HAVING절로 옮겨주겨

HAVING ROUND(AVG(DATEDIFF(SUBSTRING(END_DATE,1,11), SUBSTRING(START_DATE,1,11)) + 1),1)  >= 7

로 구현하니 정상 작동했다...

 

아마도, CAR_ID의 구룹 테이블이 만들어져야 하는 조건이

평균 7일 이상이라 WHERE 구문이 아닌 HAVING 구문에

적어야 했는 것 같다.

 

(아직 WHERE인지, HAVING에 적어야 하는 조건이 햇갈릴 때가 있다...)

 

제출한 코드 : 

 

SELECT CAR_ID, ROUND(AVG(DATEDIFF(SUBSTRING(END_DATE,1,11), SUBSTRING(START_DATE,1,11)) + 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