To je problém mezer a ostrovů. Chcete začátek každého ostrova, který můžete identifikovat porovnáním stavu na aktuálním řádku se stavem na "předchozím" záznamu.
K tomu se hodí funkce okna:
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