Скользящая средняя скользящая каждую минуту - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть таблица базы данных sqlite3 со столбцами: дата, баллы, возраст. Пример строки данных: 2019-09-26 12:30:22 | 40 | 44

Когда я выполняю запрос SELECT, как я могу вернуть скользящее среднее всех точек данных в течение одной минуты, а не возвращать каждую отдельную точку данных?

Я пробовал SELECT date, AVG(points), AVG(age) FROM table GROUP BY strftime(date, %m);, но запрос возвращает только одну запись со всеми усредненными значениями. Я хочу возвращать одну запись в минуту, где возвращаемой датой может быть либо первая найденная дата, либо среднее из всех.

Вот несколько примеров дат из записей в моей базе данных:

2019-09-26 12:36:22
2019-09-26 12:36:40
2019-09-26 13:14:31
2019-09-26 13:14:46
2019-09-26 13:14:59
2019-09-28 13:19:40
2019-09-28 13:20:19

В этом случае я хотел бы вернуть 4 строки (одна для 12:36, одна для 13:14, один на 13:19 и один на 13:20 в среднем)

1 Ответ

2 голосов
/ 03 февраля 2020

Вы хотите запрос, который агрегирует по минутам. Обратите внимание:

select
    strftime('%Y-%m-%d %H:%M', date),
    avg(age) avg_age,
    avg(points) avg_points
from mytable
group by strftime('%Y-%m-%d %H:%M', date)

Выражение strftime('%Y-%m-%d %H:%M', date) усекает секунды с даты: затем вы можете применять агрегатные функции к записям в каждой группе.

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