Чтобы сравнить разные времена, вам нужно объединить таблицу с самим собой.
Следующий запрос найдет количество входов пользователя в систему в течение 5 часов, , исключая текущий авторизоваться. Если вы хотите включить текущий счет в число, измените это l1.time_accessed > l2.time_accessed
на l1.time_accessed >= l2.time_accessed
.
SELECT l1.user_id, l1.time_accessed, COUNT(l2.user_id) AS login_within_5_hour_period
FROM logins l1
LEFT JOIN logins l2
ON l1.user_id = l2.user_id
AND l1.time_accessed > l2.time_accessed
AND TIME_TO_SEC(TIMEDIFF(l1.time_accessed, l2.time_accessed)) / 3600 <= 5
GROUP BY l1.user_id, l1.time_accessed;
Этот второй запрос вернет один результат, показывающий количество входов пользователя в систему в течение 5 часы указанного времени.
SELECT l1.user_id, l1.time_accessed, COUNT(l2.user_id) AS login_within_5_hour_period
FROM logins l1
LEFT JOIN logins l2
ON l1.user_id = l2.user_id
AND l1.time_accessed > l2.time_accessed
AND TIME_TO_SEC(TIMEDIFF(l1.time_accessed, l2.time_accessed)) / 3600 <= 5
WHERE l1.time_accessed = '2020-02-19 19:00:00'
GROUP BY l1.user_id, l1.time_accessed;
Рабочий пример: https://www.db-fiddle.com/f/g7jDYqoKn38iQTFuPjej9m/1