Le principe est de faire une jointure de la table des passages sur elle même :
select a.* from passage as a, passage as b
Puis de selectionner les couples de passage par habitant :
select a.* from passage as a, passage as b where a.habitant = b.habitant
Puis d'ordonné les passages en mettant toujours le plus récent d'abord (avant chaque coupe est présent 2 fois).
select a.* from passage as a, passage as b where a.habitant = b.habitant and a.datepassage > b.datepage
Enfin de sélectionner les écarts de moins de 15 mn
select a.* from passage as a, passage as b where a.habitant = b.habitant and a.datepassage > b.datepassage and datediff(a.datepassage,b.datepassage) < 15mn
Je te laisses chercher la fonction mysql pour la différence de date et adapter avec tes nom de colonnes et de table.