문제
MYSQL
내가 작성한 정답
WITH A AS (
SELECT CAR_ID, EXTRACT(MONTH FROM START_DATE) MONTH ,COUNT(HISTORY_ID) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE '2022-07-31' < START_DATE AND START_DATE < '2022-11-01'
GROUP BY CAR_ID,EXTRACT(MONTH FROM START_DATE)
)
SELECT MONTH, CAR_ID, RECORDS
FROM A
WHERE CAR_ID IN (SELECT CAR_ID FROM A GROUP BY CAR_ID HAVING SUM(RECORDS)>=5)
AND RECORDS != 0
ORDER BY MONTH ASC, CAR_ID DESC
다른 사람들이 작성한 정답
SELECT
MONTH(START_DATE) AS MONTH,
CAR_ID,
COUNT(*) AS RECORDS
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;
MYSQL에서
YEAR(column) : 연도 추출
MONTH(column) : 월 추출
DAY(column) : 일 추출
DAYOFWEEK(column) : 요일 추출
HOUR(column) : 시 추출
MINUTE(column) : 분 추출
SECOND(column) : 초 추출
ORACLE에서는 사용할 수 없다.
→ EXTRACT(MONTH FROM column)를 사용하자
ORACLE
내가 작성한 정답
WITH A AS (
SELECT CAR_ID, EXTRACT(MONTH FROM START_DATE) MONTH , COUNT(HISTORY_ID) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE '220731'< TO_CHAR(START_DATE,'YYMMDD') AND TO_CHAR(START_DATE,'YYMMDD') < '221101'
GROUP BY CAR_ID,EXTRACT(MONTH FROM START_DATE))
SELECT MONTH, CAR_ID, RECORDS
FROM A
WHERE CAR_ID IN (SELECT CAR_ID FROM A GROUP BY CAR_ID HAVING SUM(RECORDS) >=5)
AND RECORDS != 0
ORDER BY MONTH ASC, CAR_ID DESC
Share article