2011-03-08 39 views
2

因此,如果我们有如下表所示: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 

我如何编写一个查询(没有任何子查询)来查找的平均天数每个跑步者必须在跑步之间等待(即,卡罗尔等待1天,然后是5,所以平均数是3;鲍勃每天跑步;爱丽丝等待7天)?

我在考虑表格本身的连接,然后找到每个跑步者的最大和最小值,减去它们并除以跑步次数-1。但是,如何将所有这些没有任何子查询结合起来呢?

+1

这听起来像功课indivisable。 – 2011-03-08 19:20:03

+0

是否有你不想要子查询的原因..? – 2011-03-08 19:25:58

回答

5

索林,公平地说,你已经有了答案 - (max-min)/(count-1)确实是正确的,没有进入跑步距离有多远的细节。

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

注:MySQL将转X/0(为那里只有一个亚军记录)为NULL,因为它是由0

+0

+1不错的解决方案不带子查询! – 2011-03-08 19:28:48

+0

@cyberkiwi你说得对,我很抱歉 – 2011-03-08 19:47:11

+0

感谢您的快速和很好的答复。 – Sorin 2011-03-08 20:45:32