Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में दो अलग-अलग पंक्ति सेट की गिनती प्राप्त करना और उन्हें विभाजित करना

MySQL में COUNT(*) और उपक्वेरी का उपयोग करके दो सेट की गिनती और विभाजन

दो अलग-अलग शर्तों वाले पंक्ति सेट की गिनती प्राप्त करने और उनके अनुपात की गणना करने के लिए, आप उपक्वेरी (subqueries) के साथ COUNT(*) का उपयोग कर सकते हैं।

उदाहरण के साथ पूर्ण कार्यान्वयन

आइए पहले एक टेबल बनाते हैं:

mysql> CREATE TABLE DemoTable (isMarried TINYINT(1));

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable VALUES(1), (0), (1), (1), (1);

सभी रिकॉर्ड प्रदर्शित करना

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-----------+
| isMarried |
+-----------+
| 1         |
| 0         |
| 1         |
| 1         |
| 1         |
+-----------+
5 rows in set (0.00 sec)

दोनों सेट की गिनती और विभाजन के लिए क्वेरी

mysql> SELECT
    (SELECT COUNT(*) FROM DemoTable WHERE isMarried = 1) /
    (SELECT COUNT(*) FROM DemoTable WHERE isMarried = 0) AS divide
FROM DUAL;

आउटपुट:

+--------+
| divide |
+--------+
| 4.0000 |
+--------+
1 row in set (0.00 sec)

व्याख्या:

  • पहली उपक्वेरी: isMarried = 1 वाली 4 पंक्तियाँ गिनती है
  • दूसरी उपक्वेरी: isMarried = 0 वाली 1 पंक्ति गिनती है
  • विभाजन: 4 ÷ 1 = 4.0000
  • FROM DUAL MySQL में एक डमी टेबल है जब किसी वास्तविक टेबल की आवश्यकता नहीं होती

बेहतर तरीका: कंडीशनल एग्रीगेशन

अधिक कुशल और पठनीय दृष्टिकोण:

mysql> SELECT
    SUM(CASE WHEN isMarried = 1 THEN 1 ELSE 0 END) /
    SUM(CASE WHEN isMarried = 0 THEN 1 ELSE 0 END) AS divide
FROM DemoTable;

यह एक ही टेबल स्कैन में दोनों गिनती करता है, जिससे प्रदर्शन बेहतर होता है।

सावधानी:

यदि हर (denominator) शून्य है, तो परिणाम NULL होगा। इसे संभालने के लिए NULLIF() या IF() का उपयोग करें।

  1. - MySQL में दो टेबल्स से काउंट करके स्ट्रिंग का संयुक्त काउंट कैसे प्राप्त करें

    UNION ALL और COUNT(*) के साथ दो टेबल्स का संयुक्त काउंट दो टेबल्स से स्ट्रिंग मानों का संयुक्त काउंट प्राप्त करने के लिए COUNT(*) के साथ UNION ALL का उपयोग करें। पहली टेबल बनाएं: mysql> CREATE TABLE DemoTable1 ( Name VARCHAR(20) ); पहली टेबल में स्ट्रिंग मान इन्सर्ट करें: mysql> INSERT INT

  1. - MySQL में एक ही क्वेरी से दो टेबल्स की पंक्तियों को कैसे काउंट करें

    सबक्वेरीज़ के साथ दो टेबल्स की रो काउंट एक साथ प्राप्त करना एक ही क्वेरी में दो अलग-अलग टेबल्स की पंक्ति संख्या गिनने के लिए सबक्वेरीज़ का उपयोग करें। पहली टेबल बनाएं: mysql> CREATE TABLE DemoTable1 ( Name VARCHAR(40) ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT INTO DemoTable1 VALUES (Chris);

  1. - MySQL में SUM() के साथ सशर्त गणना करके एक पंक्ति में एकाधिक कॉलम में परिणाम प्रदर्शित करना

    MySQL में पिवट-शैली सशर्त गणना एक ही क्वेरी में विभिन्न श्रेणियों के लिए एकाधिक गणना प्राप्त करने और उन्हें एक पंक्ति में अलग-अलग कॉलम के रूप में प्रदर्शित करने के लिए, SUM() के साथ बूलियन अभिव्यक्तियों का उपयोग करें। उदाहरण: पसंदीदा रंग गिनती SELECT * FROM DemoTable1452; +----------------+ | Favo