YataNox
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/151139
- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블의 월별 자동차 id 별 총 대여횟수를 출력한다.
단. 대여시작일 기준 2022년 8월 부터 10월까지 대여횟수가 5회 이상인 자동차들에 한해서이다. 또한 결과를 월을 기준 오름차, 자동자 id 기준 내림차 정렬한다.
1. id별로 그룹핑한 8월부터 10월까지의 기록을 조회한다.
2. 대여 횟수가 5회 이상인 기록으로 조건절을 건 car_id만 출력한다.
3. 해당 결과에 해당하는 car_id를 가지고 8월 ~ 10월의 기록을 출력한다.
- SQL
mysql : SELECT MONTH(START_DATE), CAR_ID, COUNT(*) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) BETWEEN 8 AND 10
GROUP BY CAR_ID
HAVING 5 <= COUNT(*)
) AND MONTH(START_DATE) BETWEEN 8 AND 10
GROUP BY CAR_ID, MONTH(START_DATE)
ORDER BY 1, 2 DESC
oracle : SELECT EXTRACT (MONTH FROM start_date) AS MONTH,CAR_ID, count(*) AS RECORDS
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where 1=1
and to_char(start_date,'yyyy-mm-dd') >= '2022-08-01'
and to_char(start_date,'yyyy-mm-dd') <= '2022-10-31'
AND CAR_ID IN ( SELECT DISTINCT CAR_ID
FROM
(SELECT CAR_ID, COUNT(*)
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE 1=1
and to_char(start_date,'yyyy-mm-dd') >= '2022-08-01'
and to_char(start_date,'yyyy-mm-dd') <= '2022-10-31'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5 ))
GROUP BY EXTRACT (MONTH FROM start_date),CAR_ID
ORDER BY EXTRACT(MONTH FROM start_date),CAR_ID DESC ;
'DB > Programmers SQL' 카테고리의 다른 글
[MY_SQL] 조건에 맞는 개발자 찾기 (0) | 2024.05.20 |
---|---|
진료과별 총 예약 횟수 출력하기 (0) | 2023.10.23 |
자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.10.19 |
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (1) | 2023.10.19 |
성분으로 구분한 아이스크림 총 주문량 (0) | 2023.10.19 |