참치코더의 꿈 메모장

Oracle / 프로그래머스 - 자동차 대여 기록에서 장기/단기 대여 구분하기 본문

Oracle

Oracle / 프로그래머스 - 자동차 대여 기록에서 장기/단기 대여 구분하기

참치깡 2025. 10. 9. 16:56
728x90

 

 

1
2
3
4
5
6
7
8
9
10
11
12
SELECT 
    HISTORY_ID, 
    CAR_ID, 
    TO_CHAR(START_DATE, 'YYYY-MM-DD') AS START_DATE, 
    TO_CHAR(END_DATE, 'YYYY-MM-DD') AS END_DATE,
    CASE 
        WHEN (END_DATE - 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;
cs

 

- 해당 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면

  '장기대여' 그렇지 않으면 '단기대여'로 표시하는 컬럼을 추가한 SQL을 작성하는 문제이다.

 

- FROM절에 해당하는 데이터가 존재하는 테이블을 작성하고

 

- 조건으로 WHERE절에 2022-9인 값을 가진 값을 추려내는 조건을 작성하였다.

 

- 다음 SELECT절에 뽑아내야하는 HISTORY_ID, CAR_ID 값을 입력하고나서 날짜 데이터 값이 

  시간까지 포함해서 전체적으로 나오므로, 날짜 포맷을 년월일만 출력되도록 작성을 하였다.

 

- 또 장기대여, 단기대여 여부를 표현하기 위해 CASE WHEN THEN END 문을 사용해서 30일 이상이면 

  장기대여, 단기대여 여부를 표시하였다.(Alias로 RENT_TYPE 표시)

 

- 마지막으로 HISTORY_ID를 기준으로 내림차순 정렬한다면 문제의 정답을 알수 있다 ^^

 

실행 결과 일부 발췌

728x90
Comments