«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Recent Posts
Tags more
Today
Total
관리 메뉴

내 인생은 개발 중

[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - MySQL 본문

SQL

[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - MySQL

seul.e 2024. 5. 28. 21:46

https://school.programmers.co.kr/learn/courses/30/lessons/151139

 

프로그래머스

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

programmers.co.kr

 

SELECT MONTH(START_DATE) AS MONTH,
       CAR_ID,
       COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID
                  FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                  WHERE DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' AND '2022-10'
                  GROUP BY CAR_ID
                  HAVING COUNT(*) >= 5)
AND DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' AND '2022-10'
GROUP BY CAR_ID, MONTH
HAVING RECORDS >= 1
ORDER BY MONTH(START_DATE), CAR_ID DESC

💡알게 된 점💡

처음엔

AND DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' AND '2022-10'

WHERE 절에서 한번 더 데이터를 걸러주지 않아서 틀렸었다. 처음에 답을 보고 이해가 안됐었지만 이 블로그를 보고 이해할 수 있었다.

https://velog.io/@dl-00-e8/Programmers-%EB%8C%80%EC%97%AC-%ED%9A%9F%EC%88%98%EA%B0%80-%EB%A7%8E%EC%9D%80-%EC%9E%90%EB%8F%99%EC%B0%A8%EB%93%A4%EC%9D%98-%EC%9B%94%EB%B3%84-%EB%8C%80%EC%97%AC-%ED%9A%9F%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

즉, 추가로 8 ~ 10월 사이의 값에 대한 조건문이 없다면, 위의 블로그 예시처럼 7월인 케이스 한 건 이상 존재 + 8월 ~ 10월 사이 대여 케이스가 5건 이상인 데이터가 있다면 이는 8월 ~ 10월 사이 대여 케이스가 5건 이상이라는 결과를 충족하므로 7월인 케이스 또한 포함되어 집계될 것이다.
그렇기에 WHERE절을 한번 더 추가하여 8월 ~ 10월 사이의 값만 집계될 수 있도록 한번 더 조건을 걸어줘야 한다.

 

 

 

너무 어려워서 답을 보고 풀었는데 나중에 다시 한번 더 풀어봐야겠다!

Comments