MySQL में SUM() के साथ बूलियन एक्सप्रेशन का उपयोग करके 0 और 1 की गिनती करना
MySQL में बूलियन एक्सप्रेशन (सत्य/असत्य) को पूर्णांक संदर्भ में 1/0 के रूप में माना जाता है। इसका उपयोग SUM() के साथ करके विशिष्ट मानों की गिनती की जा सकती है।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
isMarried TINYINT(1)
);
रिकॉर्ड डालना (0 और 1)
mysql> INSERT INTO DemoTable VALUES(0); mysql> INSERT INTO DemoTable VALUES(1); mysql> INSERT INTO DemoTable VALUES(1); mysql> INSERT INTO DemoTable VALUES(0); mysql> INSERT INTO DemoTable VALUES(1); mysql> INSERT INTO DemoTable VALUES(1); mysql> INSERT INTO DemoTable VALUES(0);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+ | isMarried | +-----------+ | 0 | | 1 | | 1 | | 0 | | 1 | | 1 | | 0 | +-----------+
0 और 1 की गिनती अलग-अलग कॉलम में करने के लिए क्वेरी
mysql> SELECT
SUM(tbl.isMarried = 1) AS all_one_count,
SUM(tbl.isMarried = 0) AS all_zero_count,
SUM(tbl.isMarried IN(0,1)) AS all_zero_count_and_one_count
FROM DemoTable tbl;
आउटपुट:
+---------------+----------------+------------------------------+ | all_one_count | all_zero_count | all_zero_count_and_one_count | +---------------+----------------+------------------------------+ | 4 | 3 | 7 | +---------------+----------------+------------------------------+
व्याख्या
isMarried = 1- सत्य होने पर 1, असत्य होने पर 0 लौटाता हैSUM()- इन 1 और 0 को जोड़ता है, प्रभावी रूप से गिनती करता हैIN(0,1)- दोनों मानों की कुल गिनती
वैकल्पिक तरीके
-- COUNT के साथ
SELECT
COUNT(CASE WHEN isMarried = 1 THEN 1 END) AS ones,
COUNT(CASE WHEN isMarried = 0 THEN 1 END) AS zeros
FROM DemoTable;
-- MySQL 8.0+ FILTER क्लॉज
SELECT
COUNT(*) FILTER (WHERE isMarried = 1) AS ones,
COUNT(*) FILTER (WHERE isMarried = 0) AS zeros
FROM DemoTable;