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

xianxbabx·2023년 1월 18일
0

MYSQL

목록 보기
4/8

문제 설명

문제

풀이

  1. 시작일이 2022-08 ~ 2022-10이면서, 총 대여횟수가 5회 이상인 값을 먼저 구한다. (이를 JOIN으로 묶어도 되지만, WHERE 절에서 CAR_ID와 비교하여 구해보았다.)
  1. WHERE 절에서 1번에서 말한 조건들을 적는다. 그리고 주의해야 할 점인 START_DATE의 조건을 (2022-08 ~ 2022-10) 작성해주어야 한다.
  1. SELECT절에서 MONTH를 새로 생성하고, CAR_ID, 그리고 CAR_ID별 총 대여 횟수를 구한 RECORDS 컬럼을 생성한다.
  1. GROUP BY 절에서 MONTH, CAR_ID 별로 그룹화한다.
  1. ORDER BY 절에서 MONTH는 오름차순, CAR_ID는 내림차순으로 정렬한다.

나의 코드

SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(CAR_ID) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID
                 FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                 WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
                 GROUP BY CAR_ID
                 HAVING COUNT(*) >= 5
                ) 
                AND START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY MONTH, CAR_ID
ORDER BY MONTH, CAR_ID DESC;

나의 조그마한 실수 🐧

WHERE 절에서 START_DATE 조건을 명시해 주지 않아서 결과는 똑같이 나오는데, 자꾸 정답이 아니라고 나와서 답답했었다. IN으로 묶은 조건에서는 START_DATE를 적어줘서 괜찮겠지 했는데 큰 틀의 조건에서는 안적었기 때문에 정답이 아니었던 것이다. 실수하지 말자 아좌좌자장

1개의 댓글

comment-user-thumbnail
2023년 1월 31일

안녕하세요! 혹시 START_DATE BETWEEN '2022-08-01' AND '2022-10-31'를 왜 한 번 더 써줘야 하는지 여쭤봐도 될까요..? 잘 모르겠습니다🥲

답글 달기