dmswl

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

코테 공부/SQL

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

dmswl. 2024. 8. 7. 17:23

M1.

# 1. 대여 시작일이 2022-08부터 2022-10까지인 데이터 추출
# 2. 이 중 자동차(CAR_ID)에 대해 GROUP BY COUNT 한 총 대여 횟수가 5회 이상인 자동차(CAR_ID)에 대해 월별(MONTH) 자동차(CAR_ID) 대여횟수(RECORDS)출력

# 1
WITH MT AS (
    SELECT CAR_ID, MONTH(START_DATE) AS MONTH
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    WHERE YEAR(START_DATE) = 2022 AND MONTH(START_DATE) IN (7,8,9)
    GROUP BY MONTH, CAR_ID
    HAVING COUNT(*) >= 5
)

SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) FROM RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY CC, MT
WHERE MT.CAR_ID = CC.CAR_ID AND MONTH IN (7,8,9) AND YEAR(START_DATE) = 2022
GROUP BY MONTH, CAR_ID
HAVING RECORDS >= 5
ORDER BY MONTH, CAR_ID DESC;

# SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RECORDS
# FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
# WHERE YEAR(START_DATE) = 2022 AND MONTH(START_DATE) IN (8,9,10)
# GROUP BY CAR_ID, MONTH
# HAVING RECORDS >= 5
# ORDER BY MONTH, CAR_ID DESC;

 

M2.

SELECT MONTH, CAR_ID, RECORDS
FROM(
    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 YEAR(START_DATE) = 2022 AND MONTH(START_DATE) BETWEEN 8 AND 10
        GROUP BY CAR_ID
        HAVING COUNT(*) >= 5)
    AND YEAR(START_DATE) = 2022 AND MONTH(START_DATE) BETWEEN 8 AND 10
    GROUP BY MONTH, CAR_ID) AS RENT
ORDER BY MONTH, CAR_ID DESC;

Comments