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