내 인생은 개발 중
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - MySQL 본문
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 절에서 한번 더 데이터를 걸러주지 않아서 틀렸었다. 처음에 답을 보고 이해가 안됐었지만 이 블로그를 보고 이해할 수 있었다.
즉, 추가로 8 ~ 10월 사이의 값에 대한 조건문이 없다면, 위의 블로그 예시처럼 7월인 케이스 한 건 이상 존재 + 8월 ~ 10월 사이 대여 케이스가 5건 이상인 데이터가 있다면 이는 8월 ~ 10월 사이 대여 케이스가 5건 이상이라는 결과를 충족하므로 7월인 케이스 또한 포함되어 집계될 것이다.
그렇기에 WHERE절을 한번 더 추가하여 8월 ~ 10월 사이의 값만 집계될 수 있도록 한번 더 조건을 걸어줘야 한다.
너무 어려워서 답을 보고 풀었는데 나중에 다시 한번 더 풀어봐야겠다!
'SQL' 카테고리의 다른 글
[프로그래머스] 특정 물고기를 잡은 총 수 구하기 (0) | 2024.06.19 |
---|---|
[프로그래머스] 대장균들의 자식의 수 구하기 - MySQL (0) | 2024.06.18 |
[프로그래머스] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 - MySQL (0) | 2024.05.22 |
[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 - MySQL (0) | 2024.05.20 |
[프로그래머스] 카테고리 별 도서 판매량 집계하기 - MySQL (0) | 2024.05.18 |
Comments