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

MySQL पिछले 7 दिनों के डेटा की गणना करें

MySQL में पुनरावर्ती कार्यक्षमता नहीं है, इसलिए आपके पास NUMBERS टेबल ट्रिक का उपयोग करना शेष है -

  1. एक तालिका बनाएं जिसमें केवल वृद्धिशील संख्याएं हों - auto_increment का उपयोग करके करना आसान:

    DROP TABLE IF EXISTS `example`.`numbers`;
    CREATE TABLE  `example`.`numbers` (
      `id` int(10) unsigned NOT NULL auto_increment,
       PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
  2. तालिका का उपयोग करके पॉप्युलेट करें:

    INSERT INTO NUMBERS
      (id)
    VALUES
      (NULL)
    

    ...जितने मूल्यों की आपको आवश्यकता है।

  3. DATE_ADD तारीखों की सूची बनाने के लिए, NUMBERS.id मान के आधार पर दिनों को बढ़ाते हुए। "2010-01-01" और "2010-01-02" को अपनी संबंधित आरंभ और समाप्ति तिथियों से बदलें (लेकिन उसी प्रारूप का उपयोग करें, YYYY-MM-DD HH:MM:SS)। इस उदाहरण में, मैंने पिछले सप्ताह के अनुक्रमिक दिनांक मानों की सूची प्राप्त करने के लिए CURRENT_DATE से NUMBERS.id मान घटाया -

    SELECT x.dt
      FROM (SELECT DATE_SUB(CURRENT_DATE, INTERVAL (n.id - 1) DAY) AS dt
              FROM numbers n
             WHERE n.id <= 7 ) x
    
  4. डेटाटाइम भाग के आधार पर डेटा की अपनी तालिका में बाएं शामिल हों।

       SELECT x.dt,
               COUNT(v.aid) AS num
         FROM (SELECT DATE_SUB(CURRENT_DATE, INTERVAL (n.id - 1) DAY) AS dt
                 FROM numbers n
                WHERE n.id <= 7 ) x
    LEFT JOIN VOTES v ON DATE(FROM_UNIXTIME(v.timestamp)) = DATE(x.dt)
     GROUP BY x.dt
     ORDER BY x.dt
    

नंबर क्यों, तारीखें क्यों नहीं?

सरल - संख्या के आधार पर तिथियां उत्पन्न की जा सकती हैं, जैसे मैंने प्रदान किए गए उदाहरण में। इसका अर्थ एकल तालिका का उपयोग करना, बनाम प्रति डेटा प्रकार एक कहना है।

पहले:

  SELECT DATE(FROM_UNIXTIME(v.timestamp)) AS dt,
         COUNT(v.aid)
    FROM VOTES v
   WHERE DATE(FROM_UNIXTIME(v.timestamp)) BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
                                              AND CURRENT_DATE
GROUP BY DATE(FROM_UNIXTIME(v.timestamp))


  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 कनेक्शन कहां करता है। अंत () जाता है

  2. मैसकल, डेटा को लंबे/लंबे से चौड़ा करने के लिए दोबारा आकार दें

  3. क्या MySQL में केवल एक फ़ील्ड के लिए WHERE क्लॉज दिखाने का कोई तरीका है?

  4. मेरे मैक पर अजगर mysqldb गलती:लाइब्रेरी लोड नहीं हुई:@ rpath/libmysqlclient.21.dylib

  5. jOOQ जेनरेट की गई कुंजियों को वापस करने के साथ क्वेरी डालें