Если вам нужно среднее количество поездок в день в течение месяца, вам необходимо в конечном итоге разделить количество поездок за месяц на количество дней в этом месяце. По крайней мере, я так понимаю, что означает среднее число поездок в день за месяц (т. Е. Количество дней в месяце должно учитываться при расчете). Если бы я совершил 3 поездки 1 января 2020 года и не проводил никаких других поездок до конца года, это было бы в среднем 3
поездок в год . Это также будет в среднем 3
поездок в месяц за январь 2020 года. Но это может быть только 3/31
поездок в день за весь месяц.
Если вы хотите поделить только количество дней, в которые фактически были совершены поездки, то вопрос должен быть сформулирован так: «Как вы находите среднее число поездок за дней поездки за каждый месяц ... "или слова на этот счет.
Кроме того, я не уверен, как вы хотите справиться с поездкой, которая начинается в один день и заканчивается в другой. Это SQL просто смотрит на дату начала, поскольку это то, что вы делаете:
select year(start_date) as start_year,
month(start_date) as start_month,
count(*) /
(select day(last_day(concat(start_year, '-', start_month, '-01')))) as avg
from trips
group by start_year, start_month
order by start_year, start_month
Выражение select day(last_day(concat(start_year, '-', start_month, '-01')))
вычисляет количество дней в месяце, заданном годом start_year
и месяцем start_month
, что необходимо, поскольку среднее число поездок в день в течение месяца - это общее количество поездок за месяц, деленное на количество дней в месяце.
См. Db Fiddle