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

लिफाफा प्राप्त करें। यानी ओवरलैपिंग टाइम स्पैन

इसे भी आजमाएं। मैंने इसे सबसे अच्छा परीक्षण किया, मेरा मानना ​​​​है कि यह सभी संभावनाओं को शामिल करता है, जिसमें आसन्न अंतराल को जोड़ना शामिल है (10:15 से 10:30 और 10:30 से 10:40 को एक अंतराल में जोड़ा जाता है, 10:15 से 10:40 ) यह भी काफी तेज होना चाहिए, यह ज्यादा उपयोग नहीं करता है।

with m as
        (
         select ip_address, start_time,
                   max(stop_time) over (partition by ip_address order by start_time 
                             rows between unbounded preceding and 1 preceding) as m_time
         from ip_sessions
         union all
         select ip_address, NULL, max(stop_time) from ip_sessions group by ip_address
        ),
     n as
        (
         select ip_address, start_time, m_time 
         from m 
         where start_time > m_time or start_time is null or m_time is null
        ),
     f as
        (
         select ip_address, start_time,
            lead(m_time) over (partition by ip_address order by start_time) as stop_time
         from n
        )
select * from f where start_time is not null
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हल्का खरीद साहसिक

  2. क्या विदेशी कुंजी बाधाएं Oracle में क्वेरी परिवर्तनों को प्रभावित करती हैं?

  3. जेएसएफ + ईजेबी आवेदन में डीबी अपवाद पकड़ो

  4. यहां कॉलम की अनुमति नहीं है INSERT स्टेटमेंट में त्रुटि

  5. पीएल/एसक्यूएल में फॉर्म-डेटा और पैरामीटर के साथ एक पोस्ट अनुरोध कैसे भेजा जाए