Рассчитать ежедневную среднюю / общую продолжительность пользователя за 2 дня? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть таблица, в которой хранятся все даты входа и выхода пользователя из системы, а также количество часов, проведенных пользователем на платформе.

С учетом этого я хочу вычислить:

  1. Среднесуточная продолжительность пользователя на платформе
  2. Ежедневная сумма продолжительности всех пользователей на платформе

Это запрос MySQL, который я начал строить:

SELECT 
    date(login_datetime)        as "Login Date"
    round(avg(hourslapsed),0)   as "Avg Daily Hours", 
    sum(hourslapsed)            as "Total Daily Hours"
FROM lapsed_table
GROUP BY "Login Date"

Это пример lapsed_table, который у меня сейчас есть:

id  date(login_datetime)    login_datetime      logout_datetime     timestampdiff(hour, login_datetime, logout_datetime) as "hourslapsed"
--  --------------------    --------------      ---------------     ----------------------------------------------------
1   Oct 1                   Oct 1 10 am         Oct 4 5pm             79
2   Oct 3                   Oct 3 11pm          Oct 5 1am             26

ВышеЗапрос был составлен исходя из предположения, что пользователи не будут тратить на платформу более 24 часов, а в редком случае это будет не более 24 часов, поэтому я сделал GROUP BY «Дата входа».Длительности, которые охватывают две разные даты (т.е. с 23:00 до 02:00 -> 3 часа), также учитываются под датой входа в систему.

ОДНАКО, это проблема, потому что пользователи оставили платформу запущенной без выхода из системы, что дало диапазон продолжительности более многих дней.

  1. Как расширить таблицу выше, чтобы создать что-то подобное?

    id   date   timestampdiff(hour, login_datetime, logout_datetime) as "hourslapsed"
    <hr>
    
    1   Oct 1               14
    1   Oct 2               24
    1   Oct 3               24
    1   Oct 4               17
    2   Oct 3                1
    2   Oct 4               24  
    2   Oct 5                1
    
  2. Является ли расширение таблицы lapsed_table, а затем подсчитывает ежедневную среднюю и общую сумму лучшим способом для этого?В конечном итоге я хочу создать что-то вроде этого:

    Date    Avg Daily Hours  Total Daily Hours
    ----    ---------------  -----------------
    Oct 1       14             14 
    Oct 2       24             24 
    Oct 3       12.5           25
    Oct 4       20.5           41 
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...