Това е форма на проблем с пропуски и острови. Можете да присвоите всеки 0
група, като преброи броя на ненулевите стойности преди нея. След това обобщете.
SQL таблиците обаче представляват неподредени комплекти. Няма подреждане, освен ако колона не посочва подреждането. Нека предположим, че имате такъв. След това:
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;