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

MySQL ग्रुपिंग परिणाम समय अवधि के अनुसार

आपकी टेबल पर थोड़ी सी जानकारी के साथ यह आपके लिए एक बुनियादी विचार से ज्यादा कुछ नहीं है, लेकिन आप ऐसा कुछ कर सकते हैं:-

SELECT COUNT(*)
FROM
(
    SELECT a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
    FROM SomeTable a
    INNER JOIN SomeTable b
    ON a.TimeStamp < b.TimeStamp
    GROUP BY a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)

सभी टाइमस्टैम्प प्राप्त करें और उन सभी अन्य टाइमस्टैम्प के साथ जुड़ें जो अधिक हैं, और MIN का उपयोग करके इसे अगले सबसे बड़े टाइमस्टैम्प तक सीमित करें। फिर उसमें से उस गिनती का चयन करें जहां अंतर 600 सेकंड से कम है (यूनिक्स टाइमस्टैम्प मानकर)।

संपादित करें - यदि आप चाहते हैं कि उपयोगकर्ताओं के लिए घटनाओं में 10 मिनट + अंतराल की संख्या के लिए बंधे हों तो:-

SELECT COUNT(*)
FROM
(
    SELECT a.user_id, a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
    FROM SomeTable a
    INNER JOIN SomeTable b
    ON a.TimeStamp < b.TimeStamp
    AND a.user_id = b.user_id
    GROUP BY a.user_id, a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQLdb का उपयोग करके कर्सर को कब बंद करें

  2. MySQL अनुक्रमणिका - कितने पर्याप्त हैं?

  3. पीडीओ - अमान्य पैरामीटर संख्या

  4. स्टॉक प्रबंधन डेटाबेस डिजाइन

  5. PHP के साथ MySQL तालिका में डेटा साफ़ करें?