문제
풀이
1. WHERE로 START_DATE가 2022년 9월인 기록만 찾기
2. START_DATE, END_DATE 포맷팅하기
3. RENT_TYPE이라는 컬럼을 추가하고 END_DATE - START_DATE에 따라 다르게 표기하기
4. HISTORY_ID 내림차순으로 정렬하기
간단한 문제라고 생각하고 쿼리를 다음과 같이 작성했다.
SELECT HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 30 THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE >= '2022-09-01' AND START_DATE < '2022-10-01'
ORDER BY HISTORY_ID DESC;
그런데 오답 판정을 받아서 뭐가 문제인가 했더니
DATEDIFF(END_DATE, START_DATE) >= 30
여기가 문제였다 😅😅😅
대여 기간이 1일인 경우에는 DATEDIFF가 0이므로, 저건 대여 기간이 31일 이상인 걸 찾는 조건이 되는 것이다
SELECT HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 29 THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE >= '2022-09-01' AND START_DATE < '2022-10-01'
ORDER BY HISTORY_ID DESC;
30 -> 29로 수정하니 정답이 되었다
'Algorithm > [프로그래머스] - MySQL' 카테고리의 다른 글
[프로그래머스] LV.2 연도별 대장균 크기의 편차 구하기 (1) | 2024.12.27 |
---|