SQL 코드카타

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

여연찌 2024. 4. 9. 14:18
  • CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요.
SELECT MONTH(start_date) MONTH
     , car_id
     , COUNT(*) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE (START_DATE between '2022-08-01' AND '2022-10-31')   # 해당기간동안의
AND (car_id IN(      # WHERE 절에서 서브쿼리
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(car_id) >= 5
))
GROUP BY 1,2
ORDER BY 1, 2 DESC

 

① 서브쿼리

# 22년8월부터 10월까지의 총 대여 횟수가 5회 이상인 자동차들을 뽑아준다

 

② WHERE (START_DATE between '2022-08-01' AND '2022-10-31') 

# 해당 기간 동안의 월별 기준이기 때문에

WHERE 절에서 해당 기간의 조건을 넣어준다.

# 서브쿼리에서는 car_id 만 뽑아줌!

 

해당 기간 동안 + 5회 이상인 car_id 

두가지 다 만족해야하기 때문에 서브쿼리와 where 절에도 적어준다.

 

 

 

 

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

 

프로그래머스

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

programmers.co.kr