admin

SQL:查找每个跑步者的平均跑步间隔天数

sql

因此,如果我们提供下表:

runner  ran
Carol   2011-02-01
Alice   2011-02-01
Bob     2011-02-01
Carol   2011-02-02
Bob     2011-02-02
Bob     2011-02-03
Bob     2011-02-04
Carol   2011-02-07
Alice   2011-02-08

如何编写查询(不包含任何子查询)以查找每个跑步者在两次跑步之间必须等待的平均天数(即Carol等待1天,然后是5天,因此平均值为3; Bob每天跑步;
Alice等待7天) ?

我当时正在考虑在表本身上进行联接,然后为每个跑步者找到最大值和最小值,然后将它们相减并除以运行次数-1。但是,如何在不使用任何子查询的情况下将所有这些组合起来?


阅读 170

收藏
2021-06-07

共1个答案

admin

坦白说,索林(Sorin),您已经有了答案-(max-min)/(count-1)确实是正确的,而无需详细说明运行距离有多远。

select runner, datediff(max(ran),min(ran)) / (count(ran)-1)
from running
group by runner;

注意:MySQL将X / 0(对于一个跑步者只有一条记录)变成NULL,因为它是0不可分割的。

2021-06-07