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

उन तिथियों के लिए शून्य लौटाता है जो मौजूद नहीं हैं MYSQL GROUP BY

आप आमतौर पर मान तालिका . के साथ जॉइन करके इस प्रकार की चीज़ें प्राप्त करते हैं , यानी एक तालिका जिसमें आपकी रुचि के सभी मान शामिल हैं।

विशिष्ट मान तालिकाओं में उदाहरण के लिए 0 और 1,000 के बीच के सभी पूर्णांक मान या किसी निश्चित अवधि के लिए सभी तिथियां शामिल हो सकती हैं। अक्सर Value तालिकाओं में वांछित से अधिक मान शामिल होते हैं, और हम WHERE क्लॉज में फ़िल्टर जोड़कर वांछित सटीक आउटपुट प्राप्त करते हैं।

इस मामले में आपको ऐसी तालिका की आवश्यकता होगी जिसमें तिथियां हों। मान लें कि इस तालिका को ValTableDates नाम दिया गया है और इसमें जनवरी 2005 और दिसंबर 2010 के बीच की सभी तिथियां शामिल हैं, तो क्वेरी इस तरह दिखेगी:

SELECT AVG(data) AS data, VT.ValDate
FROM ValTableDates VT
LEFT JOIN  table T ON T.dateReg = VT.ValDate
WHERE VT.ValDate > [Some Start Date] and VT < [Some End Date]
GROUP BY YEAR(dateReg), MONTH(dateReg), DAY(dateReg) 
ORDER BY dateReg

उपरोक्त क्वेरी को NULL के बजाय शून्य मान प्राप्त करने के लिए थोड़ा बदलाव करने की आवश्यकता हो सकती है, लेकिन मुख्य बिंदु यह है कि मान तालिका आमतौर पर अनुपलब्ध डेटा बिंदुओं के लिए आउटपुट रिकॉर्ड प्रदान करने का सबसे सरल तरीका है।
एक विकल्प का उपयोग करना है एक फ़ंक्शन/एक्सप्रेशन जो एक सबक्वेरी के अंदर वांछित [दिनांक] अनुक्रम उत्पन्न करता है, लेकिन यह आम तौर पर कम कुशल और अधिक त्रुटि प्रवण होता है।




  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 सर्वर 8.0 कीरिंग माइग्रेशन त्रुटि

  2. प्रत्येक पृष्ठ पर डीबी से कनेक्ट होने से बचने के लिए mySQL और PHP पर शुरुआती प्रश्न

  3. SQL सर्वर और MySQL में काम करने योग्य तालिकाओं की अधिकतम संख्या

  4. MYSQL डेटाटाइम फ़ील्ड से सटीक समय अंतर प्राप्त करना

  5. एक mysql क्वेरी से कई पेज बनाएं