Welcome! Everything is fine.

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

프로그래머스/SQL

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

개발곰발 2024. 4. 12.
728x90

📌 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

📌 정답

다른 건 다 잘 작성해놓고 항상 CASE문에서 막힌다..! 꼭 기억해두자. DATEDIFF 함수도 다른 문제를 풀 때 공부했던 것 같은데 또 까먹었다. 일 차이를 구할 때는 DATEDIFF 함수를 주로 쓰지만, 연, 월, 시, 초 등을 지정해 구할 때는 TIMESTAMPDIFF 함수를 주로 이용한다고 한다.  DATEDIFF 함수 뒤에 + 1을 한 것은...1일에 빌려 1일에 반납을 해도 대여기간은 1일이기 때문에 1을 더해주었다고 보면 된다.

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 YEAR(START_DATE) = 2022 AND MONTH(START_DATE) = 09
ORDER BY HISTORY_ID DESC