Przy niewielkiej ilości informacji na twoich stołach jest to dla ciebie tylko podstawowy pomysł, ale możesz zrobić coś takiego:-
SELECT COUNT(*)
FROM
(
SELECT a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
FROM SomeTable a
INNER JOIN SomeTable b
ON a.TimeStamp < b.TimeStamp
GROUP BY a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)
Pobierz wszystkie sygnatury czasowe i połącz je ze wszystkimi innymi sygnaturami czasowymi, które są większe, i użyj MIN, aby zawęzić to do następnego największego sygnatury czasowej. Następnie wybierz z tego liczbę, dla której różnica jest mniejsza niż 600 sekund (zakładając unixowe znaczniki czasu).
EDYTUJ - Jeśli chcesz ograniczyć liczbę ponad 10 minut w wydarzeniach dla użytkowników, to:-
SELECT COUNT(*)
FROM
(
SELECT a.user_id, a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
FROM SomeTable a
INNER JOIN SomeTable b
ON a.TimeStamp < b.TimeStamp
AND a.user_id = b.user_id
GROUP BY a.user_id, a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)