λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“ μ•Œκ³ λ¦¬μ¦˜/Programmers

[MySQL/PGS] Lv.1 : μžλ™μ°¨ λŒ€μ—¬ κΈ°λ‘μ—μ„œ μž₯κΈ°/단기 λŒ€μ—¬ κ΅¬λΆ„ν•˜κΈ°

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

문제 μ„€λͺ…

λ‹€μŒμ€ μ–΄λŠ μžλ™μ°¨ λŒ€μ—¬ νšŒμ‚¬μ˜ μžλ™μ°¨ λŒ€μ—¬ 기둝 정보λ₯Ό 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY ν…Œμ΄λΈ”μž…λ‹ˆλ‹€. CAR_RENTAL_COMPANY_RENTAL_HISTORY ν…Œμ΄λΈ”은 μ•„λž˜μ™€ 같은 ꡬ쑰둜 λ˜μ–΄μžˆμœΌλ©°, HISTORY_ID, CAR_ID, START_DATE, END_DATE λŠ” 각각 μžλ™μ°¨ λŒ€μ—¬ 기둝 ID, μžλ™μ°¨ ID, λŒ€μ—¬ μ‹œμž‘μΌ, λŒ€μ—¬ μ’…λ£ŒμΌμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

Column nameTypeNullable
HISTORY_ID INTEGER FALSE
CAR_ID INTEGER FALSE
START_DATE DATE FALSE
END_DATE DATE FALSE

문제

CAR_RENTAL_COMPANY_RENTAL_HISTORY ν…Œμ΄λΈ”μ—μ„œ λŒ€μ—¬ μ‹œμž‘μΌμ΄ 2022λ…„ 9월에 μ†ν•˜λŠ” λŒ€μ—¬ 기둝에 λŒ€ν•΄μ„œ λŒ€μ—¬ 기간이 30일 이상이면 'μž₯κΈ° λŒ€μ—¬' 그렇지 μ•ŠμœΌλ©΄ '단기 λŒ€μ—¬' 둜 ν‘œμ‹œν•˜λŠ” 컬럼(컬럼λͺ…: RENT_TYPE)을 μΆ”κ°€ν•˜μ—¬ λŒ€μ—¬κΈ°λ‘μ„ 좜λ ₯ν•˜λŠ” SQL문을 μž‘μ„±ν•΄μ£Όμ„Έμš”. κ²°κ³ΌλŠ” λŒ€μ—¬ 기둝 IDλ₯Ό κΈ°μ€€μœΌλ‘œ λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ν•΄μ£Όμ„Έμš”.


 

λ‚ μ§œ ν˜•μ‹ : date_format(컬럼 이름, '%Y-%m-%d') as μƒˆ 컬럼 이름

λ‚ μ§œ 차이 κ΅¬ν•˜κΈ° (일 수) : datediff(end_date, start_date)

κΈ°κ°„ : λ‚ μ§œ 차이 + 1 = datediff(end_date, start_date) + 1

 

 

λ‚˜μ˜ 풀이

select HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d') as START_DATE, 
    DATE_FORMAT(END_DATE, '%Y-%m-%d')END_DATE, 
    if(DATEDIFF(END_DATE, START_DATE) +1 >= 30,"μž₯κΈ° λŒ€μ—¬","단기 λŒ€μ—¬") as RENT_TYPE
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where start_date >= "2022-09-01" and start_date < "2022-10-01"
order by history_id desc;