<답>
SELECT
HISTORY_ID, CAR_ID,
TO_CHAR(START_DATE,'YYYY-MM-DD') START_DATE,
TO_CHAR(END_DATE,'YYYY-MM-DD') END_DATE,
CASE
WHEN TRUNC(END_DATE) - TRUNC(START_DATE) + 1 >= 30 THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE,'YYYY-MM') = '2022-09'
ORDER BY HISTORY_ID DESC;
1. 2022년 9월에 대여한 기록에서만 조회
▶ WHERE TO_CHAR(START_DATE,'YYYY-MM') = '2022-09'
▶ 'TO_CHAR'은 날짜형태를 문자열 형태로 변경해준다.
2. 대여기간이 30일 이상이면 장기 대여, 그렇지 않으면 단기 대여로 표시하는 컬럼 추가
▶ CASE WHEN 조건 THEN 결과 ELSE 결과 END AS 컬럼명
▶ 'TRUNC()'는 날짜만 남기고 시간은 버린다.
▶ 조건은 밑에 두개 아무거나 사용해도 상관없다.(하지만 문제를 보면 첫번째 것으로 해야 더 정확하다)
WHEN TRUNC(END_DATE) - TRUNC(START_DATE) + 1 >= 30 THEN '장기 대여' ELSE '단기 대여'
WHEN TRUNC(END_DATE) - TRUNC(START_DATE) + 1 < 30 THEN '단기 대여' ELSE '장기 대여'
▶ 대여종료일 - 대여시작일 + 1로 계산
※ 계산부분에서 실수를 했었는데
만약 9월 1일에 빌리고 9월 2일에 반납하였다면 이틀 빌린것이기 때문에
9월2일 - 9월1일 + 1 = 1+1 = 2
라는 결과가 나오게 된다.
3. 대여 기록 ID 기준 내림차순 정렬
▶ ORDER BY 컬럼 DESC 로 내림차순 정렬한다.
'💿 Oracle > 프로그래머스 Lv. 1' 카테고리의 다른 글
[프로그래머스] 과일로 만든 아이스크림 고르기 (0) | 2023.06.05 |
---|---|
[프로그래머스] 조건에 맞는 도서 리스트 출력하기 (0) | 2023.04.28 |
[프로그래머스] 평균 일일 대여 요금 구하기 (0) | 2023.04.28 |
[프로그래머스] 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.04.25 |
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2023.04.24 |