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

MySQL में एकल क्वेरी में बूलियन फील्ड मानों की गणना

समाधान: CASE के साथ सशर्त SUM

एकल क्वेरी में बूलियन (0/1) फील्ड के सत्य और असत्य मानों की गणना करने के लिए SUM() के साथ शर्तीय अभिव्यक्ति का उपयोग करें।

व्यावहारिक उदाहरण

टेबल बनाना और डेटा डालना

mysql> CREATE TABLE countBooleanFieldDemo (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentFirstName VARCHAR(20),
    -> isPassed TINYINT(1)
    -> );

mysql> INSERT INTO countBooleanFieldDemo(StudentFirstName, isPassed) VALUES
    -> ('Larry', 0), ('Mike', 1), ('Sam', 0), ('Carol', 1), ('Bob', 1),
    -> ('David', 1), ('Ramit', 0), ('Chris', 1), ('Robert', 1);

डेटा (9 पंक्तियाँ)

उत्तीर्ण (1): 6 छात्र | अनुत्तीर्ण (0): 3 छात्र

गणना क्वेरी

mysql> SELECT 
    -> SUM(isPassed = 1) AS `True`,
    -> SUM(isPassed = 0) AS `False`,
    -> CASE WHEN SUM(isPassed = 1) > 0 
    -> THEN SUM(isPassed = 0) / SUM(isPassed = 1) 
    -> END AS TotalPercentage
    -> FROM countBooleanFieldDemo;

परिणाम

+------+-------+-----------------+
| True | False | TotalPercentage |
+------+-------+-----------------+
| 6    | 3     | 0.5000          |
+------+-------+-----------------+

व्याख्या

  • isPassed = 1 बूलियन अभिव्यक्ति है जो TRUE (1) या FALSE (0) लौटाती है
  • SUM() इन 1 और 0 को जोड़ता है, प्रभावी रूप से गिनती देता है
  • प्रतिशत = अनुत्तीर्ण / उत्तीर्ण = 3/6 = 0.5

सरल विकल्प

केवल गिनती

SELECT 
    SUM(isPassed) AS passed_count,
    COUNT(*) - SUM(isPassed) AS failed_count
FROM countBooleanFieldDemo;

GROUP BY के साथ

SELECT 
    isPassed,
    COUNT(*) AS count
FROM countBooleanFieldDemo
GROUP BY isPassed;

प्रदर्शन नोट

बड़े टेबल पर इंडेक्स (isPassed पर) प्रदर्शन में सुधार करेगा।

  1. - MySQL में अलग-अलग टेबल से NOT NULL मानों की गिनती एक क्वेरी में

    सबक्वेरी से कई टेबल की नॉन-NULL गिनती COUNT(column) NULL मानों को स्वचालित रूप से बाहर करता है। सबक्वेरी के साथ कई टेबल की गिनती एक साथ प्राप्त करें। पहली टेबल INSERT INTO DemoTable1 VALUES(1), (NULL), (2), (3); दूसरी टेबल INSERT INTO DemoTable2 VALUES(10), (NULL), (NULL); एक क्वेरी में दोनों

  1. - MySQL में फ़ील्ड मान से कॉमा की गिनती करना

    LENGTH और REPLACE से वर्ण गिनती किसी वर्ण (जैसे कॉमा) की घटनाएँ गिनने के लिए: कुल लंबाई - उस वर्ण को हटाने के बाद की लंबाई। सिंटैक्स SELECT LENGTH(col) - LENGTH(REPLACE(col, ,, )) AS comma_count FROM table; तालिका और डेटा INSERT INTO DemoTable1510 VALUES(20,35), (45,67,89), (90,97,101,190); कॉ

  1. - विशिष्ट कॉलम मानों के लिए एकल MySQL क्वेरी में एकाधिक काउंट प्राप्त करें

    इसके लिए, आप विशिष्ट कॉलम के लिए पैरामीटर मान के साथ एग्रीगेट फंक्शन SUM() का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1790 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows affected (0.94 sec) इन्सर्ट कमा