SQL: нахождение среднего количества дней между запусками для каждого бегуна - PullRequest
2 голосов
/ 08 марта 2011

Итак, если у нас есть следующая таблица:

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 Ответ

5 голосов
/ 08 марта 2011

Сорин, честно говоря, у вас уже есть ответ - (max-min)/(count-1) действительно правильно, не вдаваясь в подробности того, насколько далеко друг от друга проходят трассы.

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

Примечание: MySQL превратит X / 0 (если для бегуна только одна запись) в NULL, потому что он неделим на 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...