mysql - 从单个 SQL 查询返回聚合结果行

标签 mysql sql time

我有一个 MySQL 表,其中一列用于存储时间,另一列用于存储与该时间相关的值。

time | value
------------
 1   |  0.5     
 3   |  1.0     
 4   |  1.5 
.... | .....

事件不是周期性的,即时间值不会按固定间隔递增。

由于有大量行(> 100000),为了在图表中显示值,我希望能够在整个时间长度内聚合(平均)固定大小间隔的值数据可用。所以基本上输出应该由成对的区间值和平均值组成。

目前,我将总时间间隔分成固定的时间 block ,针对该间隔执行单独的聚合查询,并在应用程序代码 (Java) 中收集结果。有没有办法在 SQL 中执行所有这些步骤。此外,我目前正在使用 MySQL,但对可能支持高效解决方案的其他数据库持开放态度。

最佳答案

SELECT FLOOR(time / x) AS Inter, AVG(value) AS Mean
FROM `table` 
GROUP BY Inter;

x 是固定大小的区间。

关于mysql - 从单个 SQL 查询返回聚合结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160041/

相关文章:

mysql - 如何从单个表中找到共同值(value)?

sql - 如何对SQLITE数据库中的表列重新排序?

php - 比较时间范围并计算时间差

Java 8 DateTimeFormatter 可选部分不带秒

mysql - 优化 UNION mysql 查询

mysql - 如何在此带有 CASE 语句的多 JOIN 语句中使用 GROUP BY 语法?

mysql - 如何为mysql中的列提供自动增量?

sql - 如何将表中列的每个值传递给存储过程并将结果保存在 SQL-Server 中的表中

mysql - 更新后触发 - 复制到另一个表

python - 基于时间戳重新处理 mp4 视频 Python