因此,如果我们提供下表:
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。但是,如何在不使用任何子查询的情况下将所有这些组合起来?
坦白说,索林(Sorin),您已经有了答案-(max-min)/(count-1)确实是正确的,而无需详细说明运行距离有多远。
(max-min)/(count-1)
select runner, datediff(max(ran),min(ran)) / (count(ran)-1) from running group by runner;
注意:MySQL将X / 0(对于一个跑步者只有一条记录)变成NULL,因为它是0不可分割的。
X / 0