반응형
시간이 비는 시간에는 역시 프로그래머스 문제 하나씩 풀어보는 게 도움이 되는 듯하다.
갑자기 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 가 두 번 들어가는 것이 이 문제의 핵심 같다.
오문완! 🤗
반응형
'Exercises 🤓 > SQL' 카테고리의 다른 글
[프로그래머스] 자동차 대여 기록에서 장기/단기 대여 구분하기 - MySQL (0) | 2023.01.26 |
---|---|
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 - MySQL (0) | 2023.01.16 |
[Codility] SqlWorldCup - SQL(PostgreSQL) (0) | 2022.08.28 |
[Codility] SqlEventsDelta - SQL(PostgreSQL) (0) | 2022.08.28 |
[프로그래머스] 입양 시각 구하기(2) - MySQL (0) | 2022.07.13 |
댓글