Con poche informazioni sui tuoi tavoli questa non è altro che un'idea di base per te, ma potresti fare qualcosa del genere:-
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)
Ottieni tutti i timestamp e uniscili a tutti gli altri timestamp che sono maggiori e usa MIN per restringerlo al timestamp successivo più grande. Quindi da quello seleziona il conteggio in cui la differenza è inferiore a 600 secondi (supponendo timestamp unix).
MODIFICA - Se vuoi che il numero di intervalli di oltre 10 minuti negli eventi per gli utenti sia limitato, allora:-
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)