Помимо того, что вы использовали кучу недопустимых вещей в этом примере запроса (table
- недопустимое имя таблицы, date
- недопустимое имя столбца, один из extract
s неправильный), вы должны использовать TO_CHAR
в столбце даты с требуемой маской формата - например, mm
- и сгруппируйте ее по ней. Примерно так:
SELECT PRODUCT_ID,
PRODUCT_NAME,
EXTRACT(YEAR FROM DATE),
--
to_char(date, 'mm') as month, --> this ...
--
COUNT(ID) AS TOTAL_COUNT,
COUNT(ID)/COUNT(DISTINCT(EXTRACT(DATE))) AS AVG_NO_RECORDS
FROM TABLE
GROUP BY PRODUCT_ID,
PRODUCT_NAME,
EXTRACT(YEAR FROM DATE),
to_char(date, 'mm') --> ... and this
С другой стороны, если вы уже группируете по году и месяцу, посмотрите, можете ли вы использовать для этого один столбец, например, to_char(date_column, 'mm.yyyy')
.