‡ CODING TEST STUDY ‡/º 프로그래머스

[SQL Lv.1] 자동차 대여 기록에서 장기/단기 대여 구분하기

Trudy | 송연 2023. 11. 7. 19:35

코딩테스트 연습 - 자동차 대여 기록에서 장기/단기 대여 구분하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr


 

[문제]

 

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.


[날짜 차이 구하기 - DATEDIFF]

DATEDIFF(날짜1, 날짜2);

 

[MySQL] 날짜 차이 가져오기 (DATEDIFF, TIMESTAMPDIFF 함수) :: 확장형 뇌 저장소 (tistory.com)

 

[MySQL] 날짜 차이 가져오기 (DATEDIFF, TIMESTAMPDIFF 함수)

▶MySQL 날짜 차이 가져오기 (DATEDIFF, TIMESTAMPDIFF 함수) ▶설명 MySQL에서 두 날짜간의 차이를 가져올 때 사용하는 함수가 두 가지가 있습니다. 단순히 일 차이를 가져올 때 사용하는 것이 DATEDIFF 함수

extbrain.tistory.com

[CASE 문 - CASE, WHEN, THEN, END]


[MySQL] CASE 기본 사용법 :: 확장형 뇌 저장소 (tistory.com)

 

[MySQL] CASE 기본 사용법

▶MySQL CASE 기본 사용법 ▶설명 MySQL에서 CASE문은 프로그래밍 언어에서 스위치(switch)문과 비슷하지만,다수의 조건에 하나의 반환 값은 동작하지 않습니다. ▶사용법 CASE WHEN 조건 THEN '반환 값' WHEN

extbrain.tistory.com


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 '장기 대여'
    WHEN DATEDIFF(end_date, start_date)+1 < 30
    THEN '단기 대여'
 END
) AS 'RENT_TYPE'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09-%'
ORDER BY history_id DESC;