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

MySQL ग्रुप बाय डेटटाइम +/- 3 सेकंड

मैं टॉम एच के उत्कृष्ट विचार का उपयोग कर रहा हूं लेकिन इसे यहां थोड़ा अलग तरीके से कर रहा हूं:

जंजीरों की शुरुआत वाली सभी पंक्तियों को खोजने के बजाय, हम सभी समय . ढूंढ सकते हैं यह जंजीरों की शुरुआत है, फिर वापस जाएं और उन पंक्तियों को खोजें जो समय से मेल खाती हों।

यहां प्रश्न # 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

मुझे पूरी तरह से यकीन नहीं है कि यह टॉम एच के जवाब से अलग से पोस्ट करने के लिए काफी अलग है, लेकिन ऐसा लगता है कि आपको कार्यान्वयन में परेशानी हो रही है, और मैं इसके बारे में सोच रहा था, इसलिए मैंने सोचा कि मैं फिर से पोस्ट करूंगा। शुभकामनाएँ!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql, mysqladmin, mysqld के बीच अंतर

  2. तालिकाएँ जिनका एकमात्र उद्देश्य किसी अन्य तालिका का सबसेट निर्दिष्ट करना है

  3. MYSQL - डेटाटाइम से सेकंड तक

  4. MySQL:समूह के अंदर द्वारा आदेश

  5. MySQL संस्करण की जांच कैसे करें