2015-11-11 3 views
3

У меня есть таблица с большим количеством данных в таблице sqlite, которую я хотел бы усреднить и уменьшить время от времени, чтобы быстро отвечать на запросы. В таблице только несколько данных измерений, которые я использую для оценки некоторых коэффи- циентов ошибок (таблица всегда обновляется).Уменьшите данные в таблице sql путем усреднения?

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

Вот что я до сих пор, однако, это просто зависит от точности данных в столбце, с помощью которого я пытаюсь группировать (column DistanceX).

SELECT avg(ErrorX), ErrorType FROM historyIMU WHERE ErrorType='XY' 
GROUP BY DistanceX 

Я хочу сделать что-то вроде GROUP BY DistanceX between +/- 0.05*DistanceX или какой-то другой способ преобразования тысячи точек в несколько сотен, которые до сих пор сохраняют ту же схему (отношения между DistanceX и ErrorX из моего примера).

+0

Я просто обойти функцию ROUND в SQLite. Кажется, сейчас это работает хорошо, если кто-то еще ничего не опубликует. 'SELECT avg (ErrorX), ErrorType FROM historyIMU WHERE ErrorType = 'XY' GROUP BY ROUND (DistanceX, 2)' – 22332112

+0

Единственная проблема с вышеизложенным заключается в том, что я теряю больше данных на более низком расстоянииX (со значением ниже 1) – 22332112

ответ

0

Я отвечаю на это в очень общем смысле sql. Вместо GROUP BY используйте пункт HAVING для фильтрации X between 0.95*DistanceX and 1.05*DistanceX.

Но это был бы тяжелый запрос. Создание индекса для его обработки немного улучшило бы его, но эта логика должна быть тяжелой.

Смежные вопросы