📝 Language: Oracle
1
2
3
4
5
6
7
8
9
10
11
12
|
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 (END_DATE-START_DATE) >= 30 THEN '장기 대여'
ELSE '단기 대여'
END RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'YYYY-MM') = '2022-09'
ORDER BY HISTORY_ID DESC;
|
🙂 확인 사항
1. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블
2. 대여 시작일이 2022년 9월
3. 대여 기간이 30일 이상 - 장기 대여 / 30일 미만 - 단기 대여
4. 컬럼명은 RENT_TYPE
5. 전체 컬럼에 RENT_TYPE 추가
6. 대여 기록 ID 기준 내림차순 정렬
+ START_DATE, END_DATE 데이터 형태 및 컬럼명 유의
😮 이 외의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
|
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 EXTRACT(DAY FROM NUMTODSINTERVAL((END_DATE - START_DATE), 'DAY TO SECOND')) >= 30 THEN '장기 대여'
ELSE '단기 대여'
END RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'YYYY-MM') = '2022-09'
ORDER BY HISTORY_ID DESC;
|
- NUMTODSINTERVAL(expr, 'DAY TO SECOND')
- 숫자를 시간 간격 데이터 형식으로 변환
- DAY TO SECOND: 일(DAY)부터 초(SECOND)까지의 시간 간격
- EXTRACT(DAY FROM ... )
- 시간 간격 데이터에서 특정 요소를 추출하는 데 사용 - 여기서는 일(DAY)을 추출
🔗 소스 코드
GitHub
'Computer > Algorithm_SQL' 카테고리의 다른 글
[Programmers] 조건에 부합하는 중고거래 댓글 조회하기 (Success) (0) | 2023.09.17 |
---|---|
[Programmers] 특정 옵션이 포함된 자동차 리스트 구하기 (Success) (0) | 2023.09.16 |
[Programmers] 평균 일일 대여 요금 구하기 (Success) (0) | 2023.09.14 |
[Programmers] 조건에 맞는 도서 리스트 출력하기 (Success) (0) | 2023.09.13 |
[Programmers] 과일로 만든 아이스크림 고르기 (Success) (0) | 2023.09.12 |