-
프로그래머스 - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기SQL 문제 2024. 1. 8. 16:36
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
CAR_RENTAL_COMPANY_RENTAL_HISTORY테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명:RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(HISTORY_ID) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE CAR_ID IN ( #차종(CAR_ID)별 대여 시작일이 8~10월이면서 총 대여 횟수가 5번 이상인 자동차 ID SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE DATE_FORMAT(START_DATE,'%Y-%m') BETWEEN '2022-08' AND '2022-10' GROUP BY CAR_ID HAVING COUNT(HISTORY_ID) >= 5 ) AND DATE_FORMAT(START_DATE,'%Y-%m') BETWEEN '2022-08' AND '2022-10' #대여 시작일이 2022년 8월부터 2022년 10월인 자동차 중 위에서 구한 서브쿼리에 해당하는 행을 구한다 GROUP BY 1,2 HAVING RECORDS > 0 ORDER BY 1 ASC,2 DESC
- 실수한 점
- 서브쿼리를 안하고 메인쿼리 안에 조건을 설정하고 쿼리를 돌림
- 메인 쿼리에 날짜 조건을 왜 써야했는지 이해가 안감, << 1시간은 쓴듯
쿼리 진행 순서
- 서브쿼리 진행
- 테이블에서 2022년 8월 ~ 10월 사이이면서, 총 대여 횟수가 5번 이상인 차의 아이디를 추출
- 차종별로 그룹화를 시킴
- 차종별로 8~10월에 대여 횟수가 5번 이상인 데이터와 월별로 그룹화 한 그룹중에 8~10월 사이에 있는 데이터가 일치하는 데이터
- 레코드가 0회는 제외기 때문에 그룹화 된 데이터중에 HAVING절로 조건을 줌
'SQL 문제' 카테고리의 다른 글
프로그래머스 - 조건에 부합하는 중고거래 댓글 조회하기 (0) 2024.01.09 프로그래머스 - 오프라인/온라인 판매 데이터 통합하기 (0) 2024.01.09 프로그래머스 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) 2024.01.08 프로그래머스 - 우유와 요거트가 담긴 장바구니 (1) 2024.01.05 프로그래머스 - 헤비 유저가 소유한 장소 (0) 2024.01.05 - 실수한 점