Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

단죤 의 블로그

[Programmers SQL] (String, Date) 자동차 대여 기록에서 장기/단기 대여 구분하기 본문

DB🖥️/SQL

[Programmers SQL] (String, Date) 자동차 대여 기록에서 장기/단기 대여 구분하기

단죤 2025. 1. 21. 11:47

출처 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제

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

🚩틀린문제/GPT 활용

 

DATEDIFF 함수

https://gent.tistory.com/430

 

[MSSQL] 날짜, 시간 차이 일수 계산 (DATEDIFF)

SQL Server에서 시작일자와 종료일자 사이의 일수 또는 시간, 분, 초 등의 차이를 계산할 때 DATEDIFF 함수를 사용한다. DATEDIFF 함수는 두 날짜를 비교하여 DATEPART 구분자에 따라서 차이를 계산하여 결

gent.tistory.com

 

 ORDER BY 1 DESC;는 결과를 정렬하는 방식을 지정하는 구문, 여기서 1은 SELECT문에서 첫 번째로 나열된 컬럼 의미

 

 

정답

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,
    IF(DATEDIFF(end_date, start_date)<29, '단기 대여', '장기 대여') AS rent_type
FROM
    car_rental_company_rental_history
WHERE
    DATE_FORMAT(start_date, '%Y-%m')='2022-09'
ORDER BY 
    1 DESC;