Maybe I'm missing something, but surely a simple analytic will do the job:
WITH T AS (
SELECT 'user a' usr, TO_DATE('9:00','HH:MI') tm, 'logged in' stat FROM DUAL UNION ALL
SELECT 'user a', TO_DATE('9:01','HH:MI'), 'logged in' FROM DUAL UNION ALL
SELECT 'user a', TO_DATE('9:02','HH:MI')...