mysql – SQL计算总行之间的平均时间差

我一直在搜索,似乎无法找到一个问题,答案对我来说很好.我有一个包含近200万行的表,每行都有一个MySQL Date格式字段.

我想计算(在几秒钟内)插入行的频率,因此使用SQL查询计算出所有行的日期之间的平均差异.

有任何想法吗?

– 编辑 –

这是我的桌子的样子

id, name, date (datetime), age, gender

解决方法:

如果您想知道插入行的频率(平均),我认为您不需要计算所有差异.您只需要总结相邻行之间的差异(基于时间戳的相邻行),并将结果除以加数的数量.

公式

((T1-T0) + (T2-T1) + … + (TN-TN-1)) / N

显然可以简化为仅仅

(TN-T0) / N

所以,查询将是这样的:

SELECT TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / (COUNT(*) - 1)
FROM atable

确保行数大于1,否则您将得到Division By Zero错误.不过,如果您愿意,可以通过一个简单的技巧来防止错误:

SELECT
  IFNULL(TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / NULLIF(COUNT(*) - 1, 0), 0)
FROM atable

现在,您可以安全地对具有单行的表运行查询.

上一篇:Python入门:标准库的简单介绍


下一篇:python – numpy的多个数组的平均值,不考虑零值