当前位置: 首页 > 面试题库 >

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

林和煦
2023-03-14
问题内容

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

我想查找不重复的连续行之间的平均时间差(按时间)。有没有办法在SQL中做到这一点?


问题答案:

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

SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) ) 
       /
       (COUNT(DISTINCT(ts)) -1) 
FROM t

对于大型桌子,这将是更快的里程,因为它没有n平方的JOIN

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

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

然后我们只是将时间戳记设置为不同。



 类似资料:
  • 我有一个这样的python列表, 我需要做的是找到每个数字与所有其他数字的差值,然后找到所有这些差值的平均值。 所以,对于这种情况,它首先会找到和所有剩余元素之间的区别,即,然后它会找到与剩余元素的区别,即等。 之后,它将计算所有这些差异的平均值。 现在,这可以通过两个For循环轻松完成,但是在时间复杂度和一点点“混乱”代码中。我想知道是否有更快,更有效的方法可以做同样的事情?

  • 问题内容: 寻找时间平均问题的最快解决方案。 我有一个日期时间对象列表。需要找到时间的平均值(不包括年,月,日)。这是到目前为止我得到的: 问题答案: 这是解决此问题的更好方法 生成日期时间样本 平均20m次 结果为timedelta(请注意,这需要numpy 1.7和pandas 0.13 ,很快就会出现) 以秒为单位(这适用于熊猫0.12,numpy> = 1.6)。

  • 我对Anylogic中源的到达时间有问题。 因此,问题的状态是,“客户到达时的到达时间呈指数分布,平均10秒”。所以我把“到达时间”定义为“到达间隔时间”,把“到达间隔时间”定义为“指数(0.167)”和“最小值”。然而,正如我所模拟的,该模型似乎有一些问题,因为它没有生成足够的代理。 我的做法错了吗? 非常感谢你!

  • 我有一个数据帧,其中的行与name列重复,但与value列不重复: 我需要将重复的名称聚合到一行中,同时计算值列的平均值。预期产出如下: 我已经尝试使用< code>df[duplicated(df$name),],但是这当然不能说明重复的含义。我想使用< code>aggregate(),但问题是这个函数有趣的部分也适用于所有其他列,而且在其他问题中,它不能计算char内容。由于所有其他列在“副

  • 我正在做一个与医学相关的模拟。如图所示,我想记录人们从timeMeasureStart到timeMeasureEnd的平均时间。我只知道如何做一个简单的直方图分布,但我如何才能得到平均时间?

  • 假设我有一个音乐平台的用户监听的下表: 其中,id(int)是收听音乐(或书籍或任何其他材料)的用户的记录,user_id(int)是收听者id,started_at(timestamp)是用户开始收听的时间,finished_at是用户完成收听的时间 我需要做的是找出用户第一次和第二次收听之间的平均时间。例如,对于user_id=101的第一个用户,它将是: “2017-10-05 15:15: