Avec peu d'informations sur vos tables, ce n'est rien de plus qu'une idée de base pour vous, mais vous pourriez faire quelque chose comme ceci :-
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)
Obtenez tous les horodatages et joignez-les à tous les autres horodatages supérieurs, et utilisez MIN pour réduire cela au plus grand horodatage suivant. Ensuite, à partir de cela, sélectionnez le nombre où la différence est inférieure à 600 secondes (en supposant des horodatages Unix).
EDIT - Si vous voulez que le nombre d'écarts de plus de 10 minutes dans les événements pour les utilisateurs soit lié :-
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)