Количество записей и среднее количество записей запросов - Oracle - PullRequest
0 голосов
/ 29 марта 2020

Вывод, например:

Год -> Месяц -> Название продукта -> Общее количество записей за год -> Среднее количество записей за год

Мой запрос возвращает общее количество и в среднем за весь год, я хотел бы, чтобы он также был разбит по месяцам:

SELECT PRODUCT_ID,PRODUCT_NAME,EXTRACT(YEAR FROM DATE), 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)

1 Ответ

0 голосов
/ 29 марта 2020

Помимо того, что вы использовали кучу недопустимых вещей в этом примере запроса (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').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...