Bonjour,
Voici comment je le ferrais :
0) Tu initialises une variable $temps_passe à 0 dans laquelle tu va additionner la durée de chaque session.
1) Tu fais un SELECT sur ta table de tous les "LOGIN" pour un utilisateur particulier, ça te donne les heures de débuts de toutes les sessions de cet utilisateur.
2) Pour chaque LOGIN (boucle foreach) tu fais un SELECT dans ta table pour récupérer l'enregistrement immédiatement suivant au LOGIN actuel (timestamp>timestamp_du_login_actuel et LIMIT 1) , qui soit de l'utilisateur qui t'intéresse bien sûr, et dont la valeur est soit un LOGIN, soit un LOGOFF.
- Si c'est un LOGOFF, alors tu peux calculer la durée exacte de session.
- Si c'est un LOGIN, alors c'est que l'utilisateur ne s'est pas déconnecté et donc que tu ne connais pas sa durée de session, à toi de choisir la valeur que tu veux mettre (tu peux regarder dans Google Analytics pour avoir la durée moyenne d'une session pour ajouter quelque chose de réaliste dans ton calcul)
3) Tu additionnes la durée que tu viens de calculer (ou de définir) dans ta variable $temps_passe
4) A la fin de ton foreach(), tu auras le total du temps passé dans ta variable $temps_passe

A toi d'essayer de le faire maintenant !
A noter que si tu as beaucoup d'utilisateurs ou beaucoup de sessions, ce process peut être assez gourmand en ressource.
Une solution pourrait être de modifier ta table des sessions pour loguer le LOGOFF sur la même ligne que le LOGIN et de calculer au moment du LOGOFF la durée de la session courante.
Comme ça, ça te fait faire un calcul très mineur au moment de chaque LOGOFF (dont temps de calcul réparti, c'est + scalable), et quand tu veux afficher la synthèse tu as juste à faire un UPDATE de tous les champs durée vide pour mettre la valeur par défaut, et un SELECT SUM(duree_session) pour avoir immédiatement la duree totale du temps passé sur ton site.