Рассчитать среднюю продолжительность сеанса на ежедневного активного пользователя? - PullRequest
2 голосов
/ 09 марта 2020

Я довольно новичок в SQL, и я борюсь с одним из вопросов в моем упражнении. Как рассчитать среднюю продолжительность сеанса на одного активного пользователя в день? Показанная таблица является просто примером того, что представляет собой расширенная таблица. Представьте, что загружается больше строк.

Я просто использовал этот запрос для расчета ежедневных активных пользователей:

SELECT COUNT (DISTINCT user_id) 
FROM table1

1 Ответ

0 голосов
/ 09 марта 2020

и добро пожаловать в 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, чтобы объединить день, месяц и год в одну строку, если хотите ...

...