Как получить средний интервал из одного столбца datetime? - PullRequest
0 голосов
/ 04 сентября 2018

В моей базе данных mysql есть следующая таблица.

user_id| department | comment_time
-----------------------------------------
ahnaf  |     OM1    | 2018-02-01 10:00:00
muttaki|     OM2    | 2018-02-01 11:00:00
sunny  |     OM3    | 2018-02-01 12:00:00
ahnaf  |     OM1    | 2018-02-01 21:00:00
john   |     OM2    | 2018-02-01 23:00:00

Из этой таблицы я хочу узнать, как часто кто-то из отдела комментирует. Я ищу ответ типа: Человек из OM1 комментирует в среднем каждые 5 минут.

Понятия не имею, как написать запрос для этого.

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

пожалуйста, попробуйте это

SELECT user_id,department, FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(comment_time))) as average_time 
FROM dept 
GROUP by user_id

Я использую имя таблицы как dept

0 голосов
/ 04 сентября 2018

попробуйте

select department, avg(diff_comment_time) FROM (select department, LAG(comment_time) OVER ( PARTITION BY department ORDER BY comment_time DESC) - comment_time as diff_comment_time from test) test2 group by department

0 голосов
/ 04 сентября 2018

Средний интервал между комментариями можно получить, взяв общий промежуток и разделив его на единицу меньше количества комментариев:

select department,
       ( ( to_seconds(max(comment_time)) - to_seconds(min(comment_time))
         ) / nullif(count(*) - 1, 0)
       ) / 60 as avg_comment_in_minutes
from t
group by department;

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

select department,
       ( ( to_seconds(now()) - to_seconds(min(comment_time))
         ) / count(*)
       ) / 60 as avg_comment_in_minutes
from t
group by department;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...