자동차 대여 기록에서 장•단기 대여 구분하기
https://school.programmers.co.kr/learn/courses/30/lessons/151138?language=oracle
문제 풀이
1 2 3 4 5 6 7 8 9 10 11
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;
1 2 3 4 5
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') LIKE '2022-09%' ORDER BY HISTORY_ID DESC;
CASE
문을 사용하여 대여 기간이 30일 이상인지 여부에 따라 ‘장기 대여’ 또는 ‘단기 대여’로 표시하고,EXTRACT
함수를 사용하여 날짜에서 연도와 월을 추출할 수 있다.1 2 3 4 5
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 EXTRACT(YEAR FROM START_DATE) = 2022 AND EXTRACT(MONTH FROM START_DATE) = 9 ORDER BY HISTORY_ID DESC;
Oracle CASE문
1 2 3 4 5 6 7 8 9
SELECT ename , deptno , CASE deptno WHEN 10 THEN 'New York' WHEN 20 THEN 'Dallas' ELSE 'Unknown' END AS loc_name FROM scott.emp WHERE job = 'MANAGER'
- 실행 결과
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.