Средняя стоимость в месяц для всего набора данных.SQL - PullRequest
0 голосов
/ 30 мая 2018

У меня есть таблица базы данных, как показано ниже, и я хочу найти среднюю стоимость за месяц для всех записей в таблице.

CREATE TABLE repairs( 
repair_id INT NOT NULL PRIMARY KEY, 
cost NUMERIC(10,2) , 
start_date DATE NOT NULL ,   
);

Я пробовал что-то как

SELECT AVG(cost) AS avg 
FROM ( SELECT count(*) AS count, MONTH(start_date) as mnth
       FROM repairs
       GROUP BY mnth) AS a

но есть ошибки, есть ли решение?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018
SELECT count(*) AS count, 
DATE_TRUNC('month',start_date) as mnth, 
AVG(cost) AS avg 
FROM repairs
GROUP BY DATE_TRUNC('month', start_date);

Это будет группировать по месяцам.Вы можете обрезать временные метки / даты до любого уровня, который вам нравится: день / неделя / квартал и т. Д.

0 голосов
/ 30 мая 2018

Используйте только group by вместо subquery:

SELECT COUNT(*) AS count, EXTRACT(MONTH FROM start_date) AS mnth, 
       AVG(cost) AS avg 
FROM repairs
GROUP BY EXTRACT(MONTH FROM start_date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...