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.但是,如何将所有这些无需子查询结合起来?
索林,公平地说,你已经有了答案 - (max-min)/(count-1)
的确是正确的,而不会涉及到跑步距离有多远的细节。
select runner, datediff(max(ran),min(ran)) / (count(ran)-1)
from running
group by runner;
注意:MySQL会将X / 0
(对于只有一个跑步者记录的地方)变成NULL,因为它不可变为0。
上一篇: SQL: Finding the average number of days between runs for each runners