मैं टॉम एच के उत्कृष्ट विचार का उपयोग कर रहा हूं लेकिन इसे यहां थोड़ा अलग तरीके से कर रहा हूं:
जंजीरों की शुरुआत वाली सभी पंक्तियों को खोजने के बजाय, हम सभी समय . ढूंढ सकते हैं यह जंजीरों की शुरुआत है, फिर वापस जाएं और उन पंक्तियों को खोजें जो समय से मेल खाती हों।
यहां प्रश्न # 1 आपको बताएगा कि कौन सा समय जंजीरों की शुरुआत है, यह पता लगाकर कि कौन सा समय उनके नीचे नहीं बल्कि 3 सेकंड के भीतर है:
SELECT DISTINCT Timestamp
FROM Table a
LEFT JOIN Table b
ON (b.Timestamp >= a.TimeStamp - INTERVAL 3 SECONDS
AND b.Timestamp < a.Timestamp)
WHERE b.Timestamp IS NULL
और फिर प्रत्येक पंक्ति के लिए, हम सबसे बड़ा चेन-स्टार्टिंग टाइमस्टैम्प ढूंढ सकते हैं जो क्वेरी #2 के साथ हमारे टाइमस्टैम्प से कम है:
SELECT Table.id, MAX(StartOfChains.TimeStamp) AS ChainStartTime
FROM Table
JOIN ([query #1]) StartofChains
ON Table.Timestamp >= StartOfChains.TimeStamp
GROUP BY Table.id
एक बार हमारे पास यह हो जाने के बाद, हम आपकी इच्छानुसार इसे GROUP BY कर सकते हैं।
SELECT COUNT(*) --or whatever
FROM Table
JOIN ([query #2]) GroupingQuery
ON Table.id = GroupingQuery.id
GROUP BY GroupingQuery.ChainStartTime
मुझे पूरी तरह से यकीन नहीं है कि यह टॉम एच के जवाब से अलग से पोस्ट करने के लिए काफी अलग है, लेकिन ऐसा लगता है कि आपको कार्यान्वयन में परेशानी हो रही है, और मैं इसके बारे में सोच रहा था, इसलिए मैंने सोचा कि मैं फिर से पोस्ट करूंगा। शुभकामनाएँ!