참치코더의 꿈 메모장

Oracle / 프로그래머스 - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 본문

Oracle

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

참치깡 2026. 2. 5. 13:11
728x90

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT EXTRACT(MONTH FROM START_DATE) AS MONTH,
       CAR_ID,
       COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE >= DATE '2022-08-01'
  AND START_DATE <  DATE '2022-11-01'
  AND CAR_ID IN (
        SELECT CAR_ID
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
        WHERE START_DATE >= DATE '2022-08-01'
          AND START_DATE <  DATE '2022-11-01'
        GROUP BY CAR_ID
        HAVING COUNT(*>= 5
  )
GROUP BY EXTRACT(MONTH FROM START_DATE), CAR_ID
ORDER BY MONTH ASC, CAR_ID DESC;
cs

 

 

- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터

  2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별

  자동차 ID 별 총 대여 횟수 리스트를 출력하는 SQL문을 작성하는 문제이다.

  이때 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순

  정렬해야한다.

 

- 일단 구해야 하는 데이터가 있는 테이블을 FORM절에 작성하고, 총 대여 횟수가 5회 이상인

  자동차들에 대해서 구하라고 했으므로, WHERE절 조건에 IN 조건을 써서 해당 기간 동안의

  총 대여 횟수가 5회 이상인 자동차르 구하였다.

 

- 다음 GROUP BY를 사용해 각 월별, 자동차 ID 별 그룹으로 묶은다음 SELECT문에 COUNT(*)

  집계함수를 사용해 월별 자동차 ID 별 총 대여 횟수 리스트를 출력하였다. 총 COUNT(*)

  값에 AS를 사용하여 RECORDS로 대신 나타내어줬고, 마지막으로 각 MONTH 별로 오름차순 정렬

  값이 같다면 CAR_ID 값으로 내림차순 정렬해준다면 정답을 얻을 수 있다.

 

 

 

 

728x90
Comments