Toto je forma problému mezer a ostrovů. Každému 0
můžete přiřadit skupinu spočítáním počtu nenulových hodnot před ní. Poté agregujte.
SQL tabulky však představují neuspořádané sady. Neexistuje žádné řazení, pokud sloupec neurčuje řazení. Předpokládejme, že jeden máte. Potom:
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;