mysql - SQL:查找每个运行者运行之间的平均天数

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

最佳答案

索林,公平地说,你已经有了答案 - (max-min)/(count-1) 确实是正确的,无需考虑运行间隔的具体情况。

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

注意:MySQL 会将 X/0(对于一个运行者只有一条记录的情况)转换为 NULL,因为它不能被 0 整除。

关于mysql - SQL:查找每个运行者运行之间的平均天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237141/

相关文章:

MySQL 获取具有特定 ID 的最新结果?

php - SQL Server : Given a year find everything (inclusive) from the year previous and given year

sql - 用 SQL 迭代匹配数据?

android - android 中的 SQLiteDatabase 查询

PHP 优化支票

mysql - 如何对多个表进行 SQL Join(FK 表具有循环结果共享 ID)

mysql - 无法实例化bean类[org.springframework.batch.core.JobExecution : Is it an abstract class?;

mysql - 我是否正确计算了一周中每天的每小时平均收入?

sql - Django 什么时候执行数据库查找?

javascript - 使用sequelize 获取字段中具有唯一值的所有行