SQL

[오라클] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 TO_DATE, EXTRACT

salmon16 2024. 9. 24. 14:09

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/151139?language=oracle

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 방법

먼저 대여 시작일이 8월에서 11월까지인 대여를 추출하기 위해 TO_DATE함수를 사용해서 8월 1일과 11월 1일을 DATE로 만들어 준 후 비교한다. 

그 후 같은 CAR_ID끼리는 그룹화해 대여 횟수가 5번 이상인 CAR_ID를 추출한다.

DATE TYPE에서 MONTH를 추출하기 위해 EXTRACT함수를 사용해서 MONTH만 추출해 준다.

EXTRACT(MONTH FROM A.START_DATE), A.CAR_ID

이를 통해 그룹화 해 각 아이디별 대여 횟수를 구하면 된다.

 

SELECT EXTRACT(MONTH FROM A.START_DATE) AS MONTH
     , A.CAR_ID
     , COUNT(A.CAR_ID) AS RECORDS
  FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY A
     , (SELECT CAR_ID
          FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY C
         WHERE START_DATE >= TO_DATE('2022-08-01', 'YYYY-MM-DD')
           AND START_DATE < TO_DATE('2022-11-01','YYYY-MM-DD')
         GROUP BY CAR_ID
        HAVING COUNT(CAR_ID) >= 5) B
 WHERE A.CAR_ID = B.CAR_ID
   AND A.START_DATE >= TO_DATE('2022-08-01', 'YYYY-MM-DD')
   AND START_DATE < TO_DATE('2022-11-01','YYYY-MM-DD')
 GROUP BY EXTRACT(MONTH FROM A.START_DATE), A.CAR_ID
 ORDER BY MONTH, CAR_ID DESC