SELECT heading, thedate
,row_number() OVER (PARTITION BY grp ORDER BY thedate) AS rn
FROM (
SELECT *, thedate - (row_number() OVER (ORDER BY thedate))::int AS grp
FROM demo
) sub;
जब आप "रैंक" की बात करते हैं तो आप विंडो फ़ंक्शन का परिणाम चाहते हैं row_number()
।
- लगातार दिनों के समूह बनाएं (
grp
. में एक ही तारीख) ) सबक्वायरी मेंsub
। - एक और
row_number()
के साथ पंक्तियों की संख्या कॉल करें, इस बारgrp
. द्वारा विभाजित किया गया ।
यहां एक सबक्वेरी न्यूनतम है, क्योंकि विंडो फ़ंक्शन को नेस्ट नहीं किया जा सकता है।
ध्यान दें कि मैं आपके विरोधाभासी नमूना डेटा के दूसरे संस्करण के साथ गया था। और परिणाम इस प्रकार है @mu सुझाया
अपनी टिप्पणी में।
यह भी मानते हुए कि कोई डुप्लिकेट तिथियां नहीं हैं। इस मामले में आपको पहले एकत्रित करना होगा।