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

SQL में लगातार पंक्तियों को एक से अधिक स्तंभों द्वारा समूहबद्ध कैसे करें

यह एक अंतराल और द्वीपों की समस्या है। इसे हल करने की एक विधि row_number() . का उपयोग करती है :

select Date, User, min(Time) as start_time, max(time) as end_time,
       Location,
       listagg(Service, ',') within group (order by service),     
       count(*) as cnt
from (select t.*,
             row_number() over (date order by time) as seqnum,
             row_number() over (partition by user, date, location order by time) as seqnum_2
      from t
     ) t
group by Date, User, Location, (seqnum - seqnum_2);

यह कैसे काम करता है, यह समझाना थोड़ा मुश्किल है। मेरा सुझाव सबक्वेरी चलाने का है और आप देखेंगे कि पंक्ति संख्याओं का अंतर उन समूहों को कैसे परिभाषित करता है जिन्हें आप ढूंढ रहे हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल 10+ में एनयूएलएल वाले कॉलम पर फ़ंक्शन-आधारित इंडेक्स का उपयोग कैसे करें?

  2. Oracle डायनेमिक 'एसक्यूएल चयन' क्वेरी रिकॉर्ड प्रकार

  3. Oracle में IW और MM का उपयोग करना

  4. CVE-2021-44228 . के लिए Oracle सुरक्षा चेतावनी

  5. विभिन्न डेटा प्रकार के साथ केस स्टेटमेंट