반응형

출저 : 프로그래머스

 

 

String, date

문제풀이

 

A. DATEDIFF 사용

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

 

※ DATEDIFF(날짜1, 날짜2) : 날짜1 - 날짜2(일수만 계산)

→ 문제는 대여일 계산이므로 첫날도 포함해야함 따라서 +1을 추가로 넣어줘야함 

 

 

 

 

틀렸던 오답

SELECT CAR_ID, ROUND(AVG(END_DATE - START_DATE+1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
GROUP BY CAR_ID
HAVING AVG(END_DATE - START_DATE+1) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC

 

→  틀린이유 : 위에 답은 일수가아닌 숫자로 취급해서 계산함,

                       예를들어 END_DATE = 2024.04.05, START_DATE = 2024.01.05 면 

                       20240405 - 20240105  = 300 이 출력됨. 그래서 오답

 

반응형

+ Recent posts

// 기업0 D-Day (표지) // 기업2 D-Day