如何在sqlite数据库中按平均值替换某些值?

时间:2015-03-06 22:24:58

标签: sqlite

我有一个sqlite数据库,其中包含一个随时间记录电力值的表,即有一个时间戳列和一个用于相关功率值的列。

大约每秒都有一个值,这个表随着时间的推移会显着增长。这就是为什么我想要稀释旧值,例如在一分钟内用平均值替换所有60个值。

我知道如何查询平均值。 我知道如何将查询的结果插回到表中。 但是如何删除原始值而不删除新插入的平均值(时间戳在同一范围内)?

请注意,我想在sqlite查询语言中完全执行操作,即不在执行查询的C代码中存储例如行ID。

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用临时表:

BEGIN;
CREATE TEMP TABLE Averages AS
  SELECT MIN(Timestamp), AVG(Value)
  FROM MyTable
  WHERE (old)
  GROUP BY (minute);
DELETE FROM MyTable WHERE (old);
INSERT INTO MyTable(Timestamp, Value) SELECT * FROM Averages;
DROP TABLE Averages;
COMMIT;