MySQL: как получить среднее время, потраченное всеми пользователями и одним пользователем - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть две таблицы каждый раз, когда приходит пользователь, я создаю новую таблицу записей нового пользователя:

tbl_users:

---------------------------------------
id     | name     | created_at
---------------------------------------
1      | Danny    | 2020-04-20 12:47:37

и другую таблицу, куда они отправляют сообщения

tbl_messages:
-------------------------------------------
id    | user_id   | message    | created_at
-------------------------------------------
1     | 1         | test mesh  | 2019-04-20 12:47:37

из созданной записи пользователя. последнее созданное сообщение будет считаться временем, потраченным пользователем. Я ищу запрос MySQL, в котором можно распечатать время, проведенное одним пользователем, и среднее время, потраченное всеми пользователями? это возможно с MYSQL?

1 Ответ

2 голосов
/ 20 апреля 2020

Вы можете объединяться и объединяться дважды:

select avg(max_diff) avg_diff_seconds
from (
    select max(timestampdiff(second, u.created_at, m.created_at)) max_diff
    from users u
    inner join messages m on m.user_id = u.id
    group by u.id, u.created_at
) t

Подзапрос вычисляет наибольшую разницу между временем создания каждого пользователя и отметкой времени его сообщений - это фактически дает вам разницу между временем создания и его последними сообщение. Затем внешний запрос вычисляет среднее значение.

...