포스트

자동차 대여 기록에서 장•단기 대여 구분하기

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 라이센스를 따릅니다.