https://school.programmers.co.kr/learn/courses/30/lessons/151139
• 풀이
1. 8월~10월 중 대여횟수가 5회 이상인 car_id를 구한다
select car_id
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE,'YYYY-MM')
BETWEEN '2022-08' AND '2022-10'
GROUP BY CAR_ID
HAVING COUNT(car_id) >= 5
2. 안에서 구해진건 car_id 뿐이고 전체 그룹쿼리에서는 다시 한번 위처럼 8~10월 데이터만 거르기 위해
where 조건으로 다시한번 8~10월 조건을 걸고 그룹바이 한다
SELECT TO_CHAR(START_DATE,'FMMM') MONTH, CAR_ID, COUNT(CAR_ID) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN(
select car_id
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE,'YYYY-MM')
BETWEEN '2022-08' AND '2022-10'
GROUP BY CAR_ID
HAVING COUNT(car_id) >= 5
)
AND
TO_CHAR(START_DATE, 'YYYY-MM-DD') BETWEEN '2022-08-01' AND '2022-10-31'
group by to_char(start_date, 'FMMM'), car_id
ORDER BY TO_NUMBER(TO_CHAR(START_DATE, 'FMMM')), CAR_ID DESC;
월을 표현하는 month는 01,02... 형태가 아닌 1,2.. 형태로 나와야 하기에
FMMM으로 자릿수를 채워서 1,2,3.. 으로 나오게 만들었다
order by 조건에 to_char로 문자열로 변환한 1,2,3 으로 넣으면 제대로 정렬이 안되서 TO_NUMBER로 한번 더 싸줬다
'SQL' 카테고리의 다른 글
입양 시각 구하기(1) - GROUP BY, DATE 자료형 변환 (0) | 2024.12.16 |
---|---|
년, 월, 성별 별 상품 구매 회원 수 구하기 - group by (0) | 2024.12.16 |
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 - 조인 (0) | 2024.12.09 |
상품을 구매한 회원 비율 구하기 - 플머 (0) | 2024.12.04 |
그룹별 조건에 맞는 식당 목록 출력하기 - 프로그래머스 (1) | 2024.12.03 |