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

डेटाबेस पर क्षैतिज मानों की गणना कैसे करें?

कोई अंतर्निहित वाक्यविन्यास नहीं है जो आपको गतिशील रूप से कॉलम के एक सेट को संदर्भित करने की अनुमति देगा, यानी उन्हें स्पष्ट रूप से नामित किए बिना। यदि आप गतिशीलता चाहते हैं, तो आपको आवश्यक कॉलम नामों को पकड़ने के लिए मेटाडेटा से पूछताछ करनी होगी, फिर अंतिम क्वेरी को गतिशील रूप से बनाना होगा।

लेकिन इससे पहले आपको अभी भी इस बात का अंदाजा होना चाहिए कि डायनामिक क्वेरी को काम करने के बारे में वास्तव में कैसे जाना चाहिए। इसलिए, आपको सबसे पहले समस्या को परिमित . पर हल करना होगा कॉलम सेट।

इस समस्या को हल करने के एक से अधिक तरीके हैं। @bluefeet द्वारा सुझाई गई विधि शायद स्पष्ट और कम कुशल लोगों में से एक है। आप कम से कम दो विकल्प आजमा सकते हैं:

  1. सशर्त एकत्रीकरण का उपयोग करके प्रत्येक कॉलम को अलग से गिनें और सभी परिणामों को एक अभिव्यक्ति में जोड़ें:

    SELECT
      COUNT(DATA1 > 0 OR NULL) +
      COUNT(DATA2 > 0 OR NULL) +
      COUNT(DATA3 > 0 OR NULL) +
      COUNT(DATA4 > 0 OR NULL) +
      COUNT(DATA5 > 0 OR NULL) +
      COUNT(DATA6 > 0 OR NULL) +
      COUNT(DATA7 > 0 OR NULL) AS TOTAL
    FROM yourtable
    ;
    

    (OR NULL ट्रिक समझाया गया है -a-condition" title="किसी शर्त के साथ पंक्तियों की गणना करते समय मुझे MySQL में "OR NULL" की आवश्यकता क्यों है">यहां ।)

  2. DATA को अनपिवट करें क्रॉस का उपयोग करने वाले कॉलम एक वर्चुअल टेबल से जुड़ते हैं, फिर बिना पिटे कॉलम पर शर्त लागू करते हैं:

    SELECT
      COUNT(*) AS TOTAL
    FROM (
      SELECT
        CASE s.col
          WHEN 'DATA1' THEN DATA1
          WHEN 'DATA2' THEN DATA2
          WHEN 'DATA3' THEN DATA3
          WHEN 'DATA4' THEN DATA4
          WHEN 'DATA5' THEN DATA5
          WHEN 'DATA6' THEN DATA6
          WHEN 'DATA7' THEN DATA7
        END AS DATA
      FROM yourtable
      CROSS JOIN (
        SELECT 'DATA1' AS col
        UNION ALL SELECT 'DATA2'
        UNION ALL SELECT 'DATA3'
        UNION ALL SELECT 'DATA4'
        UNION ALL SELECT 'DATA5'
        UNION ALL SELECT 'DATA6'
        UNION ALL SELECT 'DATA7'
      ) s
    ) s
    WHERE DATA > 0
    ;
    

    (एक तरह से, यह @bluefeet के सुझाव के समान है, यह किसी यूनियन को नियोजित नहीं करता है।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php/mysql में अरबी भाषा प्रकट होती है ???? html में प्रश्न चिह्न

  2. PHP के साथ विदेशी कुंजियों का उपयोग कैसे करें

  3. mysql में एक फ़ाइल के लिए sql क्वेरी के परिणाम लिखें

  4. MySQL:किसी तालिका में सभी स्तंभों का चयन करना और उसी तालिका से एक स्तंभ का चयन करना

  5. एक्सएमएल फाइलों से MYSQL में बल्क इंसर्शन