02/09 SQL 문제풀이

Data Architect / Engineer·2024년 2월 9일
1

1일_1SQL

목록 보기
28/63
post-thumbnail

문제

  • 프로그래머스 SQL 문제
  • 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 / 레벨 3
  • 문제 내용 : 하단 프로그래머스 문제 [링크]




내가 작성한 Query

SELECT MONTH(START_DATE) AS MONTH
    , CAR_ID
    , COUNT(CAR_ID) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
AND 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(CAR_ID) >= 5)
GROUP BY MONTH(START_DATE), CAR_ID
ORDER BY MONTH ASC, CAR_ID DESC;
  • 먼저, 1차적으로 '2022-08-01' ~ '2022-10-31' 기간동안 총 대여 회수가 5회 이상인 데이터를 필터링 해야한다. 해당 기간동안 총 대여회수가 5회 이상인 CAR_ID를 추출하기 위해 서브쿼리를 하나 작성해준다.

  • 위에서 얻은 CAR_ID들을 가진 데이터들의 월별/차량별 대여 횟수를 구해준다. WHERE 절에 위에서 작성한 서브쿼리의 CAR_ID를 가지는 차량의 조건을 추가해준다.

  • WHERE 절에 START_DATE 시작일 기준으로 '2022-08-01' ~ '2022-10-31'간의 데이터를 추출하기 위한 조건을 추가해준다.

  • GROUP BY를 통해 월별, 차량별 데이터로 그룹핑하기 위해 MONTH(START_DATE), CAR_ID 기준으로 그룹핑한다.

  • COUNT(CAR_ID) AS RECORDS를 통해 차량별 대여 횟수를 추출해준다.

  • ORDER BY를 통해 MONTH 기준 오름차순, CAR_ID 기준으로 내림차순 정렬해준다.

profile
질문은 계속돼 아오에

0개의 댓글