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

तिथि के अनुसार समूहीकरण, कोई रिकॉर्ड न मिलने पर भी वापसी पंक्ति

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-03-01" को अपनी संबंधित आरंभ और समाप्ति तिथियों से बदलें (लेकिन उसी प्रारूप का उपयोग करें, YYYY-MM-DD) -

    SELECT x.*
      FROM (SELECT DATE_ADD('2010-01-01', INTERVAL n.id - 1 DAY)
              FROM numbers n
             WHERE DATE_ADD('2010-01-01', INTERVAL n.id -1 DAY) <= '2010-03-01' ) x
    
  4. डेटाटाइम भाग के आधार पर अपने डेटा तालिका में बाएं शामिल हों:

       SELECT DATE(x.dt) AS dt,
              COALESCE(SUM(e.value), 0) AS sum_value
         FROM (SELECT DATE_ADD('2010-01-01', INTERVAL n.id - 1 DAY) AS dt
                 FROM numbers n
                WHERE DATE_ADD('2010-01-01', INTERVAL n.id -1 DAY) <= '2010-03-01' ) x
    LEFT JOIN ENTRY e ON DATE(e.datetime) = x.dt
                     AND e.entryid = 85
     GROUP BY DATE(x.dt) 
    

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

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




  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. MySQL में SET autocommit=1 और START TRANSACTION के बीच अंतर (क्या मैंने कुछ याद किया है?)

  3. MySQL क्वेरी - वर्तमान तिथि के आधार पर रिकॉर्ड प्राप्त करें

  4. Django में विदेशीकी संबंधों को समझना/mySQL उर्फ ​​चकमा देना

  5. प्रयोक्ताओं को उपयोक्तानाम से user_group में मिलाना