본문 바로가기

프로그래머스 풀이/Lv 3

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

728x90

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

 

프로그래머스

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

programmers.co.kr

 

어려운 문제였다. 그룹바이를 두개의 컬럼으로 걸 수 있는 능력이 있는가 묻는 문제였다. 또한 서브쿼리도 그룹바이를 써야하고 메인쿼리에서도 그룹바이를 써야하는 문제로 신선했다.

그런데 메인 쿼리에서 WHERE START_DATE>="2022-08-01" and START\_DATE<"2022-11-01

이것을 제거하면 틀렸습니다가 나오는데 이미 서브쿼리에서 다 정재된 CAR_ID가 오는것인데 왜 한 번 더 하냐면 서브쿼리에만 날짜 조건문을 붙일 시, 만약 8~10월 사이에 5건 이상이 존재하고 7월에도 대여건이 존재한다면 결과값으로 7월에 해당하는 대여건까지 나올 수 있기 때문이다.

 

출처: https://velog.io/@jus6886/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-SQL-%EB%8C%80%EC%97%AC-%ED%9A%9F%EC%88%98%EA%B0%80-%EB%A7%8E%EC%9D%80-%EC%9E%90%EB%8F%99%EC%B0%A8%EB%93%A4%EC%9D%98-%EC%9B%94%EB%B3%84-%EB%8C%80%EC%97%AC-%ED%9A%9F%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

 

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

https://school.programmers.co.kr/learn/courses/30/lessons/151139문제CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대

velog.io

 

SELECT month(start_date) as MONTH, CAR_ID, COUNT(CAR_ID) AS RECORD FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
WHERE START_DATE>="2022-08-01" and START_DATE<"2022-11-01" and CAR_ID IN
(
    SELECT CAR_ID 
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    WHERE START_DATE>="2022-08-01" and START_DATE<"2022-11-01" 
    GROUP BY CAR_ID
    HAVING COUNT(*) >= 5
)
GROUP BY MONTH, CAR_ID
ORDER BY MONTH, CAR_ID DESC;