DB

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

staktree 2023. 11. 29. 18:52

https://school.programmers.co.kr/learn/courses/30/lessons/151138

 

프로그래머스

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

programmers.co.kr

 

 

문제 : 

 

예시 : 

 

 

해결 : 

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 LIKE '2022-09-%'
ORDER BY HISTORY_ID DESC;

 

CASE문을 활용하여 대여일자를 계산하여 '단기 대여'인지 '장기 대여'인지를 파악하여 출력하도로록 했습니다. 
LIKE문을 이용하여 2022년 09월에 이루어진 대여를 검색하였습니다. 

DESC를 활용하여 HISTORY_ID를 기준으로 내림차순 정렬하여 출력했습니다.

 

정보 : 

 

1. DATE_FORMAT(A, "")

DATE타입의 값을 원하는 형식으로 표현하도록 변환합니다. "%Y-%m-%d"로 사용하면 "년-월-일"의 형식으로 출력합니다. 

2. DATEDIFF(A, B)

A와 B 사이의 날짜 차이를 계산합니다. 

 

3. LIKE '2022-%'

문자열의 공통된 부분이 있다면 참을 반환합니다. 

공통되지 않아도 되는 부분은 '%' 기호를 사용하여 표현합니다.