【问题标题】:SQL: Finding the average number of days between runs for each runnersSQL:查找每个跑步者跑步之间的平均天数
【发布时间】:2011-03-08 19:14:53
【问题描述】:

如果我们有下表:

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。但是如何在没有任何子查询的情况下组合所有这些?

【问题讨论】:

  • 有什么理由你不想要任何子查询..?

标签: mysql sql


【解决方案1】:

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 整除。

【讨论】:

  • 感谢您的快速回复。
  • 我的立场是正确的。它似乎是正确的,并且可能是最快的解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-11-23
  • 2020-06-21
  • 2013-03-10
  • 2015-04-13
  • 2021-08-10
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多