如何查找表中行之间的平均时差?

Bar*_*ski 7 mysql sql

我有一个存储一些时间戳的mysql数据库.我们假设表中的所有内容都是ID和时间戳.时间戳可能重复.

我想找到不重复的连续行之间的平均时差(按时间).有没有办法在SQL中执行此操作?

Nic*_*cue 31

如果您的表是t,并且您的时间戳列是ts,并且您想要在几秒钟内得到答案:

SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) ) 
       /
       (COUNT(DISTINCT(ts)) -1) 
FROM t
Run Code Online (Sandbox Code Playgroud)

由于没有n平方JOIN,这对于大型表来说会快几英里

这使用了一个可爱的数学技巧,有助于解决这个问题.暂时忽略重复的问题.连续行之间的平均时间差是第一个时间戳和最后一个时间戳之间的差值除以行数-1.

证明:连续行之间的平均距离是连续行之间的距离之和除以连续行数.但是连续行之间差异的总和只是第一行和最后一行之间的距离(假设它们按时间戳排序).并且连续行数是总行数-1.

然后我们只是将时间戳调整为不同的.