我有一个sqlite数据库,其中包含一个随时间记录电力值的表,即有一个时间戳列和一个用于相关功率值的列。
大约每秒都有一个值,这个表随着时间的推移会显着增长。这就是为什么我想要稀释旧值,例如在一分钟内用平均值替换所有60个值。
我知道如何查询平均值。 我知道如何将查询的结果插回到表中。 但是如何删除原始值而不删除新插入的平均值(时间戳在同一范围内)?
请注意,我想在sqlite查询语言中完全执行操作,即不在执行查询的C代码中存储例如行ID。
答案 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;