728x90
1. 자동차 대여 기록에서 장기/단기 대여 구분하기
문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
내 풀이 (오답)
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 (START_DATE LIKE '2022-09%') AND (DATEDIFF(END_DATE, START_DATE)+1 >= 30) THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
ORDER BY
HISTORY_ID DESC;
혹시 오답 이유 아시는 분 댓글 달아주시면 감사하겠습니다..
다른 사람 풀이
SELECT
HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') END_DATE,
CASE
WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30 THEN '장기 대여'
ELSE '단기 대여'
END RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
CASE WHEN THEN
https://jyeong0814.tistory.com/15
DATEDIFF 함수:
- DATEDIFF() 함수는 두 날짜 간의 차이를 계산하는 데 사용된다.
- 일반적인 구문은 DATEDIFF(unit, start_date, end_date)이며, unit은 날짜 차이의 단위(일, 주, 월 등), start_date와 end_date는 비교할 두 날짜이다.
- unit을 생략하면 기본적으로 일(day) 단위로 차이를 계산한다.
- 예를 들어, DATEDIFF(DAY, '2022-01-01', '2022-01-10')은 '2022-01-01'과 '2022-01-10' 사이의 일 수를 반환한다.
DATE_FORMAT 함수 정리
https://jyeong0814.tistory.com/41
728x90
'SQL > 프로그래머스 고득점 kit' 카테고리의 다른 글
[프로그래머스] SQL 고득점 kit(오랜 기간 보호한 동물(1)) (0) | 2024.01.30 |
---|---|
[프로그래머스] SQL 고득점 kit(카테고리 별 도서 판매량 집계하기) (0) | 2024.01.29 |
[프로그래머스] SQL 고득점 kit(자동차 평균 대여 기간 구하기) (0) | 2024.01.27 |
[프로그래머스] SQL 고득점 kit(조건에 부합하는 중고거래 상태 조회하기) (0) | 2024.01.27 |
[프로그래머스] SQL 고득점 kit(재구매가 일어난 상품과 회원 리스트 구하기, 특정 옵션이 포함된 자동차 리스트 구하기) (0) | 2024.01.25 |