Il s'agit d'un problème de lacunes et d'îlots. Vous voulez le début de chaque île, que vous pouvez identifier en comparant l'état de la ligne actuelle à l'état de l'enregistrement "précédent".
Les fonctions de fenêtre sont pratiques pour cela :
select t.*
from (
select t.*, lag(status) over(partition by personID order by unixtime) lag_status
from mytable t
) t
where lag_status is null or status <> lag_status