본문 바로가기

알고리즘 공부 및 문제 풀이/프로그래머스(PRO)

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

[문제]

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

 

프로그래머스

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

programmers.co.kr

 

[풀이]

1. 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서. 서브 쿼리를 이용해 해당 조건에 맞는 자동차 ID만 추출

2. 특정 월의 총 대여횟수가 0인 경우는 제외. HAVING 절 이용. 

 

[코드]

 

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 MONTH(START_DATE)>=8 AND MONTH(START_DATE)<=10 GROUP BY CAR_ID HAVING COUNT(*)>=5)
AND
MONTH(START_DATE)>=8 AND MONTH(START_DATE)<=10
GROUP BY MONTH, CAR_ID
HAVING(COUNT(*)>0)
ORDER BY MONTH(START_DATE), CAR_ID DESC;