postgreSQL среднее значение за 1 минуту - PullRequest
0 голосов
/ 06 июня 2018

Мне нужно запросить из моей базы данных (postgreSQL) среднее значение за 1 минуту.

База данных записывается в миллисекундах и выглядит так:

timestamp | value
------------------
1528029265001 | 123
1528029265020 | 232
1528029265025 | 332
1528029265029 | 511
...           | ...
1528029265176 | 231

Я пытался:

SELECT   
      avg(value), 
      extract(minutes FROM to_timestamp(timestamp/1000)) as one_min
FROM table GROUP BY one_min

Но похоже, что он застрял в запросах.

Я уверен, что есть супер простой способ сделать это.Есть предложения?

1 Ответ

0 голосов
/ 06 июня 2018

Я предполагаю, что вы хотите:

SELECT floor(timestamp/(60 * 1000)) as timestamp_minute
       avg(value)
FROM table
GROUP BY timestamp_minute;

Однако, если ваша проблема связана с производительностью, это будет иметь те же проблемы с производительностью.Для этого вам понадобится предложение where, ограничивающее объем обрабатываемых данных.

Поскольку данные не собираются через равные промежутки времени, вам может потребоваться простое среднее из первого и последнего значений,или что-то в этом роде.

...