본문 바로가기
Exercises 🤓/SQL

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

by 째파 2023. 1. 30.
반응형

시간이 비는 시간에는 역시 프로그래머스 문제 하나씩 풀어보는 게 도움이 되는 듯하다.

갑자기 SQL 작업을 해야 했는데 며칠만 손 놔도 기억 안 나는 게 현실..ㅜㅠ

 


 

🤔 문제

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

 

프로그래머스

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

programmers.co.kr

문제 난이도는 Lv.3이고 완료한 사람이 아직 500여 명 밖에 되지 않아 풀어보았다.

MySQL, OracleSQL을 선택해서 풀어볼 수 있다.

 

😄 나의 풀이

WITH CAR_LIST AS (
    SELECT *, MONTH(START_DATE) AS MONTH
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
    WHERE START_DATE >= STR_TO_DATE('20220801', '%Y%m%d%H%i%s')
    AND START_DATE < STR_TO_DATE('20221101', '%Y%m%d%H%i%s')
)
SELECT MONTH, CAR_ID, COUNT(*) AS RECORDS
FROM CAR_LIST
WHERE CAR_ID IN (SELECT CAR_ID
    FROM CAR_LIST
    GROUP BY CAR_ID
    HAVING COUNT(*) >=5
                )
GROUP BY MONTH, CAR_ID
ORDER BY MONTH ASC, CAR_ID DESC

우선 주어진 기간 내에 해당하는 자동차 대여 리스트 CAR_LIST를 만들었다.

그리고 WHERE 조건에서 CAR_LIST 테이블로부터 5회 이상 대여한 ID를 뽑아 해당 ID들의 월별 대여 횟수를 구한다.

STR_TO_DATE() 함수를 사용해서 날짜 기간을 선택하는 것과 GROUP BY 가 두 번 들어가는 것이 이 문제의 핵심 같다.

 

오문완! 🤗

반응형

댓글