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 이 출력됨. 그래서 오답
'필기ㆍ코테 공부 > SQL' 카테고리의 다른 글
[프로그래머스/MYSQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (1) | 2025.01.05 |
---|---|
[프로그래머스/MYSQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2025.01.05 |
[프로그래머스/MYSQL] 조건에 맞는 사용자 정보 조회하기 (0) | 2025.01.05 |
[프로그래머스/MYSQL] 카테고리 별 상품 개수 구하기 (2) | 2025.01.05 |
[프로그래머스/MYSQL] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2025.01.02 |