Đây là một vấn đề khoảng trống và đảo. Bạn muốn điểm bắt đầu của mỗi hòn đảo, mà bạn có thể xác định bằng cách so sánh trạng thái trên hàng hiện tại với trạng thái trên bản ghi "trước đó".
Các chức năng của cửa sổ rất hữu ích cho việc này:
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