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

MySQL Group by - जीरो काउंट वाले कॉलम प्राप्त करें

COUNT केवल उस स्थिति के लिए COUNT लौटा रहा है जो उसे Microsoft के लिए मिली है। और वे अस्वीकृत और निकाले गए हैं। आपको क्वेरी को सभी स्थितियों में फीड करना होगा और उन सभी की घटनाओं को COUNT करना होगा। जो दिखाई नहीं देंगे वे तालिका में 0:

. के साथ छोड़ दिए जाएंगे
SELECT a.STATUS, 
      SUM(CASE 
        WHEN b.STATUS IS NOT NULL
          THEN 1
        ELSE 0
      END) AS StatusCount
FROM (
  SELECT DISTINCT STATUS
  FROM tab1
  ) a
LEFT JOIN tab1 b ON a.STATUS = b.STATUS AND b.CompanyName = 'Microsoft'
GROUP BY a.STATUS;

यह क्या करता है:

SELECT DISTINCT STATUS
FROM tab1

यह सभी स्थितियों को संभव पाता है। यदि आपके पास सभी संभावित स्थितियों के साथ एक संदर्भ तालिका है, तो बेहतर होगा कि इस क्वेरी के बजाय इसका उपयोग करें।

फिर आप इस टेबल पर स्टेटस और कंपनीनाम के अनुसार लेफ्ट जॉइन करते हैं। इस तरह, टेबल पर रिकॉर्ड होने पर ही आपको STATUS में एक मैच मिलेगा। अगर है, तो आप एसयूएम में 1 जोड़ते हैं, अन्यथा आप 0 जोड़ते हैं।

sqlfiddle डेमो



  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 कैरेक्टर सेट utf-8 एरर को इनिशियलाइज़ नहीं कर सकता है

  2. PHP/MySQL अपडेट कोड

  3. Mysql से डेटा पुनर्प्राप्त करने के लिए Jquery Ajax का उपयोग करना

  4. मैं CGI इंटरफ़ेस के माध्यम से अपने C++ बायनेरिज़ को कैसे लागू करूं?

  5. मुझे विदेशी कुंजी कहाँ संग्रहीत करनी चाहिए?