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

दिनांक सीमाओं के साथ सबसे अधिक ओवरलैपिंग समयावधि कैसे खोजें

इसके लिए कई दृष्टिकोण हैं। एक सहसंबद्ध उपश्रेणियों का उपयोग करता है। यह ज्यादा मजेदार नहीं है। इसके बजाय, चलिए संचयी योग विधि का उपयोग करते हैं क्योंकि आपके पास Oracle है।

कुंजी एक शुरुआत के लिए +1 और अंत के लिए -1 के मान के साथ टाइमस्टैम्प की सूची से शुरू करना है। यह आसान है:

select t.*
from ((select starttime as thetime, 1 as value from table t) union all
      (select endtime, -1 as value from table t)
     ) t

अब, value . का संचयी योग आपको किसी भी समय सक्रिय ओवरलैप की संख्या बताता है:

select t.*, sum(value) over (order by thetime) as numactives
from ((select starttime as thetime, 1 as value from table t) union all
      (select endtime, -1 as value from table t)
     ) t

यह आपकी समस्या का समाधान करता है। आप संभवत:order by numactives desc विशिष्ट समय के लिए।



  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. मैं अलग-अलग मामलों में तालिका कॉलम द्वारा कैसे क्रमबद्ध कर सकता हूं (ओरेकल)

  3. Oracle SQL PLS-00049:खराब बाइंड वैरिएबल

  4. Oracle पर संस्करण 4 (यादृच्छिक) UUID कैसे उत्पन्न करें?

  5. ORA-01830:संपूर्ण इनपुट स्ट्रिंग को कनवर्ट करने से पहले दिनांक स्वरूप चित्र समाप्त होता है / जहां दिनांक क्वेरी का चयन करें