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

हर दिन नहीं होने वाली घटनाओं के लिए दैनिक गणना प्राप्त करना

आप सभी दिनों को सूचीबद्ध करने का तरीका ढूंढ रहे हैं, यहां तक ​​कि वे दिन भी जो आपके customer में प्रदर्शित नहीं हैं टेबल। यह SQL में गर्दन में एक कुख्यात दर्द है। ऐसा इसलिए है क्योंकि अपने शुद्ध रूप में SQL में किसी भी चीज़ के सन्निहित अनुक्रम की अवधारणा का अभाव है ... कार्डिनल नंबर, दिन, जो भी हो।

इसलिए, आपको सन्निहित कार्डिनल संख्याओं, या तिथियों, या कुछ और के स्रोत वाली एक तालिका प्रस्तुत करने की आवश्यकता है, और फिर उस तालिका में अपने मौजूदा डेटा को शामिल करें।

ऐसा करने के कुछ तरीके हैं। एक है खुद को एक calendar . बनाना वर्तमान दशक या सदी में या जो कुछ भी हर दिन के लिए एक पंक्ति के साथ तालिका, फिर उसमें शामिल हों। (आधुनिक डेटाबेस की क्षमता की तुलना में वह तालिका बहुत बड़ी नहीं होगी।

मान लें कि आपके पास वह टेबल है, और इसमें date . नाम का एक कॉलम है . तब आप यह करेंगे।

 SELECT calendar.date AS created,
        ISNULL(a.customer_count, 0) AS customer_count
   FROM calendar
   LEFT JOIN ( 
            SELECT COUNT(*) AS customer_count,
                   DATE(created) AS created
              FROM customer
             GROUP BY DATE(created)
        ) a ON calendar.date = a.created
   WHERE calendar.date BETWEEN start AND finish 
   ORDER BY calendar.date

एक दो बातों पर ध्यान दें। सबसे पहले, LEFT JOIN कैलेंडर तालिका से आपके डेटा सेट तक। यदि आप एक साधारण JOIN . का उपयोग करते हैं आपके डेटा सेट में अनुपलब्ध डेटा कैलेंडर से पंक्तियों को दबा देगा।

दूसरा, ISNULL ऊपरी स्तर में SELECT अपने डेटासेट से अनुपलब्ध, शून्य, मानों को शून्य मानों में बदलने के लिए।

अब, आप पूछते हैं, मुझे वह कैलेंडर तालिका कहां मिल सकती है? मेरा आदरपूर्वक सुझाव है कि आप इसे देखें, और यदि आप इसका पता नहीं लगा सकते हैं तो दूसरा प्रश्न पूछें।

मैंने इस पर एक छोटा सा निबंध लिखा है, जिसे आप यहाँ पा सकते हैं।http://www.plumislandmedia.net/mysql/filling-missing-data-sequences-cardinal-integers/



  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_* कार्यों के साथ पुराने mysql-php कोड को सफलतापूर्वक फिर से कैसे लिखें?

  3. MySQL ALTER TABLE हैंग हो जाता है

  4. एयरफ्लो mysql to gcp डैग एरर

  5. पीएचपी mysqli बाहर पैरामीटर के साथ संग्रहीत कार्यविधि के लिए तैयार बयान