[SQL] 연습

[MySQL] 프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기

Simon Yoon 2024. 12. 22. 23:53

문제:

대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 대여기록을 출력
- 결과는 대여 기록 ID를 기준으로 내림차순 정렬

 

해결방법:

1. 대여기간 차이는 DATEDIFF() 함수를 사용

2. IF 문으로 장기 대여와 단기 대여 구분

3. DATE_FORMAT() 으로 날짜 형식 설정

4. 대여 시작일은 WHERE 절에서 BETWEEN A AND B 로 설정

 

예시 코드:

SELECT HISTORY_ID, CAR_ID
, DATE_FORMAT(START_DATE, "%Y-%m-%d") START_DATE
, DATE_FORMAT(END_DATE, "%Y-%m-%d") END_DATE
, IF(DATEDIFF(END_DATE, START_DATE)+1 >= 30, "장기 대여", "단기 대여") RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN "2022-09-01" AND "2022-09-30"
ORDER BY HISTORY_ID DESC
;