Dette er en form for huler-og-øer-problem. Du kan tildele hver 0
en gruppe ved at tælle antallet af ikke-nul værdier før den. Aggreger derefter.
SQL-tabeller repræsenterer dog uordnet sæt. Der er ingen bestilling, medmindre en kolonne angiver bestilling. Lad mig antage, at du har en. Så:
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;