SQLite 将大量行平均为两个所需行之间的 X 平均值

SQLite averaging lot of rows into X averaged value between two desired row

我在 SQLite 中有行,比如说 10.0000,最后一行作为 unix 时间戳。我想将今天 00:00 到 23:59 的每个值平均到 X 平均组中。如果今天有 1000 条记录且 X 为 10,则对每 100 个值求平均值,结果将是 100 条记录的 10 倍平均值。如果 x 为 20,则对每个值进行平均,结果为平均值 50x。 这些值来自传感器,例如温度,我希望能够跟踪今天 X 小时和 Y 小时等每天的温度。

最有效的方法是什么?我将 SQLite3 与 C++ 一起使用,我可以在 C++ 中使用更多查询来完成它,但我想让它进入 SQLite 并仅在可能的情况下获取结果。可视化:https://i.ibb.co/grSTgrZ/sqlite.png

感谢任何帮助,我应该从这里开始。

谢谢。

您可以使用 NTILE() window 函数创建您将聚合的组:

SELECT AVG(value) avg_value
FROM (
  SELECT *, NTILE(3) OVER (ORDER BY id) grp
  FROM tablename
)  
GROUP BY grp

NTILE()括号内的数字对应您要求的数字X。
Id 是 table 应该排序的列。
如果您有 date 列,则更改为:

SELECT AVG(value) avg_value
FROM (
  SELECT *, NTILE(3) OVER (ORDER BY date) grp
  FROM tablename
)  
GROUP BY grp

查看简化版 demo.