Đây là một dạng của vấn đề khoảng trống và đảo. Bạn có thể chỉ định từng 0
một nhóm bằng cách đếm số lượng các giá trị khác 0 trước nó. Sau đó tổng hợp lại.
Tuy nhiên, các bảng SQL đại diện cho không có thứ tự các bộ. Không có thứ tự nào trừ khi một cột chỉ định thứ tự. Hãy để tôi giả sử bạn có một cái. Sau đó:
select count(*)
from (select t.*,
sum(values <> 0) over (partition by idnumber order by <ordering col>) as grp
from t
) t
where values = 0
group by idnumber, grp;