आप इसे MySQL में वैरिएबल (या बहुत जटिल सहसंबद्ध उपश्रेणियों) का उपयोग करके कर सकते हैं। अन्य डेटाबेस में, आप विंडो/विश्लेषणात्मक कार्यों का उपयोग करेंगे।
तर्क है:
- प्रति माह एक पंक्ति और खरीदारी करने वाला व्यक्ति प्राप्त करें।
- लगातार महीनों के प्रत्येक समूह को "समूहीकरण" मान निर्दिष्ट करने के लिए चर का उपयोग करें।
- व्यक्ति और "समूहीकरण" मान के आधार पर योग करें।
यहाँ एक क्वेरी है जिसका परीक्षण आपके SQL Fiddle पर किया गया है:
select person, count(*) as numMonths
from (select person, ym, @ym, @person,
if(@person = person and @ym = ym - 1, @grp, @grp := @grp + 1) as grp,
@person := person,
@ym := ym
from (select distinct person, year(purdate)*12+month(purdate) as ym
from records r
) r cross join
(select @person := '', @ym := 0, @grp := 0) const
order by 1, 2
) pym
group by person, grp;