Ini adalah bentuk masalah gaps-and-islands. Anda dapat menetapkan setiap 0
kelompok dengan menghitung jumlah nilai bukan nol sebelumnya. Kemudian agregat.
Namun, tabel SQL mewakili tidak berurutan set. Tidak ada pemesanan kecuali jika kolom menentukan pemesanan. Biarkan saya berasumsi Anda memilikinya. Kemudian:
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;