SQL Coding Test/[Programmers]

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

duswn1204 2026. 5. 20. 21:44

🔗 문제 link : https://school.programmers.co.kr/learn/courses/30/lessons/151138


🖥️ 문제 풀이

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) = 9
ORDER BY HISTORY_ID DESC;

💡문제 해결

CASE WHEN은 조건에 따라 다른 값을 반환하는 조건문

파이썬의 if-elif-else, 엑셀의 IF()와 비슷한 역할

기본 문법

CASE
    WHEN 조건 THEN 결과값1
    ELSE 결과값2
END
 

의미:

  • 조건이 참(TRUE)이면 → THEN 값 반환
  • 조건이 거짓(FALSE)이면 → ELSE 값 반환
  • 조건 확인 종료 → END

 

DATEDIFF()는 두 날짜 사이의 차이를 계산하는 함수

기본 문법

DATEDIFF(날짜1, 날짜2)
 

시작일 포함을 위해 +1 해줌