и добро пожаловать в StackOverflow!
сейчас ваш вопрос:
Как бы рассчитать среднюю продолжительность сеанса на одного активного пользователя в день?
вы у вас уже есть время сеанса, и с помощью функции AVG вы получите простое среднее значение для всех
select AVG(session_length_seconds) avg from table_1
, но вы хотите за день ... так что вам нужно думать как группа за днем так как ты получаешь день? у вас есть activity_date
в качестве записи даты, из нее легко извлечь день, месяц и год, например,
select
DAY(activity_date) day,
MONTH((activity_date) month,
YEAR(activity_date) year
from
table_1
разбит поле даты в столбцах, которые вы можете использовать ...
Теперь, возвращаясь к вашему вопросу, в нем говорится: ежедневно активный пользователь , но все, что у вас есть, это сеансы, пользователь может иметь несколько сеансов, поэтому я понятия не имею, из контекста, которым вы поделились, то, как вы go об этом и делаете среднее значение для каждого сеанса, не имеет смысла в качестве данных для извлечения, я просто предположу, и предоставлю этот ответ, чтобы вы начали, что вам нужно среднее значение в день только
зная, как получить среднее значение, давайте создадим запрос, в котором есть все вместе:
select
DAY(activity_date) day,
MONTH((activity_date) month,
YEAR(activity_date) year,
AVG(session_length_seconds) avg
from
table_1
group by
DAY(activity_date),
MONTH((activity_date),
YEAR(activity_date)
выведет среднее значение session_length_seconds
в день / месяц / год
часть group by
, вам нужно иметь столько полей, сколько есть в select
, но которые не выполняют никаких вычислений, например sum
, count
, et c ... в нашем случае avg
выполняет вычисления, поэтому мы не хотим группировать по этому значению, но мы хотим увеличить на 3 других значения, поэтому у нас есть 3 столбца с днем, месяцем и годом. Вы также можете использовать concat
, чтобы объединить день, месяц и год в одну строку, если хотите ...