
문제
- 프로그래머스 SQL 문제
자동차 대여 기록에서 장기/단기 대여 구분하기/레벨 1- 문제 내용 : 하단 프로그래머스 문제 [링크]
내가 작성한 Query
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) + 1 >= 30 THEN '장기 대여' ELSE '단기 대여' END AS RENT_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30' ORDER BY HISTORY_ID DESC;
'2022-09'에 해당하는 데이터만 대상이 되므로, WHERE절 이용하여 9월 데이터만 추출
SELECT 절에서 START_DATE, END_DATE 컬럼을 '연-월-일' 형식으로 출력하기 위해 DATE_FORMAT(일자, '%Y-%m-%d') 함수 사용
DATEDIFF 함수 사용하여, END_DATE와 START_DATE의 일수 차이에 1을 더한 값을 구해줌. (START_DATE, END_DATE 양쪽 값들도 모두 포함해야 하므로 1을 더한 값을 구함)
위에서 구한 값이 30 이상이면 '장기 대여', 그 외에는 '단기대여' 이므로 CASE WHEN THEN 사용하여 데이터 출력
ORDER BY 사용하여 HISTORY_ID기준으로 내림차순 정렬
- 🌟🌟DATEDIFF 일수 계산 시 범위 양 끝 포함하려면 +1 해주는거 주의!
