यह अंतराल और द्वीपों की समस्या का एक रूप है। आप प्रत्येक 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;