PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

तारीखों के क्रम के आधार पर रैंक

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()

  1. लगातार दिनों के समूह बनाएं (grp . में एक ही तारीख) ) सबक्वायरी में sub
  2. एक और row_number() के साथ पंक्तियों की संख्या कॉल करें, इस बार grp . द्वारा विभाजित किया गया ।

यहां एक सबक्वेरी न्यूनतम है, क्योंकि विंडो फ़ंक्शन को नेस्ट नहीं किया जा सकता है।

SQL Fiddle.

ध्यान दें कि मैं आपके विरोधाभासी नमूना डेटा के दूसरे संस्करण के साथ गया था। और परिणाम इस प्रकार है @mu सुझाया अपनी टिप्पणी में।
यह भी मानते हुए कि कोई डुप्लिकेट तिथियां नहीं हैं। इस मामले में आपको पहले एकत्रित करना होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अन्योन्याश्रितताओं के साथ sql स्क्रिप्ट चलाना

  2. किसी अन्य कॉलम के न्यूनतम मान के आधार पर एक कॉलम का चयन करना

  3. PostgreSQL में नॉर्थविंड डेटाबेस की एक sql फ़ाइल कैसे आयात करें?

  4. Postgresql मणि स्थापित पीजी 0.18.4 पास, बंडल इंस्टॉल विफल रहता है

  5. अजगर psycopg2 postgresql तालिका में सम्मिलित नहीं कर रहा है