Ini adalah masalah kesenjangan dan pulau. Anda ingin awal setiap pulau, yang dapat Anda identifikasi dengan membandingkan status pada baris saat ini dengan status pada catatan "sebelumnya".
Fungsi jendela berguna untuk ini:
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