hyezdata 님의 블로그

대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 본문

내일배움캠프/코드카타

대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

hyezdata 2025. 4. 10. 17:06
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

 

이 문제는 푸는데 며칠 걸렸는데 그동안 문제를 잘못 이해하고 있었음...;;

그것도 두번이나...

이 거짓같은 섬에 버려지다니

 

먼저 첨엔 '대여시작일 기준' 2022-08 ~ 2022-10 을 빼먹음

-- 2022-08 ~ 2022-10 중 대여 횟수 5회 이상인 자동차
-- 월별 자동차 ID별 총 대여횟수(records)
-- 월 기준 오름차순, car_id DESC
-- 총 대여횟수 0이면 제외

SELECT *
FROM (SELECT CASE WHEN start_date >= '2022-08-01' AND end_date <= '2022-08-31' THEN '8'
                  WHEN start_date >= '2022-09-01' AND end_date <= '2022-09-30' THEN '9'
                  WHEN start_date >= '2022-10-01' AND end_date <= '2022-10-31' THEN '10'
             END AS 'month', 
             car_id,
             COUNT(car_id) AS 'records'
      FROM car_rental_company_rental_history
      GROUP BY 1, 2
      HAVING COUNT(car_id) > 4
     ) AS m
WHERE m.month IS NOT NULL
ORDER BY m.month, car_id DESC

 

대여 시작일 기준을 조건에 넣어서 다시 풀었으나 당연히 안되겠지...

SELECT MONTH(start_date) AS month, car_id, COUNT(car_id) AS records
FROM car_rental_company_rental_history
WHERE DATE_FORMAT(start_date, '%Y-%m-%d') BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY month, car_id
HAVING COUNT(car_id) >= 5

 

문제는 202년 8월 ~ 2022년 10월 '동안에 대여 5번 이상인 자동차들'을 구하고 그 안에서 월별 대여 횟수를 구하는 것!

이었는데 나는 2022-08 ~ 2022-10 사이에 월별 자동차ID별 대여 횟수만 구한 거였음...ㅎ

 

-- 대여 시작일 기준 2022-08 ~ 2022-10 중 대여 횟수 5회 이상인 자동차들에 대해서
-- 월별 자동차 ID별 총 대여횟수(records)
-- 월 기준 오름차순, car_id DESC
-- 총 대여횟수 0이면 제외

SELECT MONTH(start_date) AS month, car_id, COUNT(*) AS records
FROM car_rental_company_rental_history
WHERE DATE_FORMAT(start_date, '%Y-%m-%d') BETWEEN '2022-08-01' AND '2022-10-31'
  AND car_id IN (
        SELECT car_id
        FROM car_rental_company_rental_history
        WHERE DATE_FORMAT(start_date, '%Y-%m-%d') BETWEEN '2022-08-01' AND '2022-10-31'
        GROUP BY car_id
        HAVING COUNT(car_id) >= 5
  )
GROUP BY MONTH(start_date), car_id
ORDER BY month, car_id DESC

 

728x90
반응형