문제
1) CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 8월부터 2022년 10월까지 임대 기간 기준 2) 총 대여 횟수가 5회 이상인 차량약 3) 이 기간 동안4)에서 매월 자동 ID로 5) 총 대여 횟수(컬럼 이름: RECORDS) 목록을 출력하는 SQL 문을 작성합니다. 결과를 월별로 오름차순으로 정렬하거나 월이 같은 경우 자동 ID별로 내림차순으로 정렬합니다. 해당 월의 총 대여 횟수가 0인 경우 결과에서 제외해주세요.
문제를 해결하다
- 대여 시작일을 기준으로 WHERE 조건을 설정합니다.
- GROUP BY를 사용하여 위 기간 동안 자동차당 총 렌트 수를 확인합니다.~처럼 바인딩하고 HAVING 조건을 설정하여 5배 이상 아래인 차량을 선택합니다.
- 총 대여 횟수가 5회 이상인 자동차만 검색하는 하위 쿼리에 기존 쿼리를 결합하여 해당 기간만 검색할 수 있도록 WHERE 조건을 적용한다.
- GROUP BY로 그룹화하여 월 및 자동 ID로 검색합니다.
- 위의 조건을 만족하는 경우의 총 수를 알려면 count 함수를 사용하여 쿼리하십시오.
– SELECT에서 TO_NUMBER()를 사용하는 이유: 월을 ’08’이 아닌 8로 조회할 수 있습니다.
전체 코드
SELECT TO_NUMBER(TO_CHAR(START_DATE, 'MM')) AS MONTH, a.CAR_ID, count(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY a JOIN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'YYYY-MM-DD') BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY CAR_ID
HAVING count(*) >= 5
) b ON a.CAR_ID = b.CAR_ID
WHERE TO_CHAR(START_DATE, 'YYYY-MM-DD') BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY TO_CHAR(START_DATE, 'MM'), a.CAR_ID
ORDER BY 1, 2 DESC

