в данном случае event 1 - это вход пользователя, 2 - это выход
задача такая, что нужно посчитать общее время работы пользователей.
Т.е. если посмотреть на пример выше то за март месяц первый пользователь проработал 25 минут в целом, а второй пользователь 10 минут
Каким то образом нужно сгруппировать и с агрегировать информацию по длительности между парными строками по каждому пользователю и чтобы event шли в определенной последовательности, т.е. только между 1 и 2 (не между 2 и 1)
Покажите требуемый ответ для именно этих данных. Уточните: если два входа подряд - считать от первого или от последнего? а если два выхода подряд?
Замените (либо добавьте) табличный вид примера данных на скрипты CREATE TABLE + INSERT INTO. Ещё лучше - создайте online fiddle и дайте ссылку. Пример данных должен включать все вышеперечисленные "некорректности данных".
WITH cte AS ( SELECT *,
LAG(`datetime`) OVER (PARTITION BY login ORDER BY `datetime`) lag_datetime,
LAG(event) OVER (PARTITION BY login ORDER BY `datetime`) lag_event
FROM history )
SELECT login, SUM(TIMESTAMPDIFF(MINUTE, lag_datetime, `datetime`)) duration
FROM cte
WHERE (event, lag_event) = (2,1)
GROUP BY login;