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

iinnuyh_s·2024년 1월 1일
0

SQL

목록 보기
2/17
post-thumbnail
post-custom-banner

대여 횟수가 많은 자동차들의 대여 횟수 구하기

풀이

  • GROUP BY... 어렵다 .... 꽤 많이 헤맸음 ^^;
  • SQL 문제는 문제를 이해하고 조건들의 순서를 정해서 구현하는 것이 중요한 것 같다.
  • 구현할 조건
    1. 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 라고 나왔으므로, 이 자동차들을 먼저 구한다고 생각하고,
    2. 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력 : 월 별, 자동차 별 이라고 명시 되어 있으므로 GROUP BY 임을 예상한다.
    3. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬
    4. 마지막 조건이 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외 인데, 애초에 1번 조건에서 "총 대여 횟수가 5회 이상인" 자동차들에 대해 구하고 들어갔으니 이 조건은 신경쓰지 않아도 된다.

    😇 정답 코드

    SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RECORDS
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    WHERE CAR_ID IN (SELECT CAR_ID 
                    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
                    WHERE MONTH(START_DATE) BETWEEN 8 AND 10
                    GROUP BY CAR_ID
                    HAVING COUNT(HISTORY_ID)>=5
                   ) AND MONTH(START_DATE) BETWEEN 8 AND 10
    GROUP BY MONTH, CAR_ID
    ORDER BY MONTH, CAR_ID DESC;
    • IN 다음절 서브쿼리가 1번 조건 충족한 것. (+4번 조건)
    • 괄호 다음 AND 조건은 2번 조건의 "해당 기간 동안의~" 를 충족
    • 그 다음 줄 GROUP BY MONTH,CAR_ID 는 2번 조건의 "월별, 자동차 ID별 총 대여 횟수" 를 충족.
    • 마지막 ORDER BY 는 3번 조건을 충족.

SQL 아직 많이 부족하다,,, 화이팅 ! !

post-custom-banner

0개의 댓글