सशर्त SUM के साथ एकाधिक गणना एक साथ
एक ही क्वेरी में NULL मानों की संख्या, शून्य मानों की संख्या, और शून्य/NULL को छोड़कर विशिष्ट मानों की संख्या गिनने के लिए सशर्त SUM() का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable(
Value INT
);
Query OK, 0 rows affected (1.35 sec)
mysql> INSERT INTO DemoTable VALUES(10); Query OK, 1 row affected (0.30 sec) mysql> INSERT INTO DemoTable VALUES(NULL); Query OK, 1 row affected (0.29 sec) mysql> INSERT INTO DemoTable VALUES(10); Query OK, 1 row affected (0.59 sec) mysql> INSERT INTO DemoTable VALUES(0); Query OK, 1 row affected (0.23 sec) mysql> INSERT INTO DemoTable VALUES(20); Query OK, 1 row affected (0.27 sec) mysql> INSERT INTO DemoTable VALUES(10); Query OK, 1 row affected (0.70 sec) mysql> INSERT INTO DemoTable VALUES(0); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable VALUES(NULL); Query OK, 1 row affected (0.16 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-------+ | Value | +-------+ | 10 | | NULL | | 10 | | 0 | | 20 | | 10 | | 0 | | NULL | +-------+ 8 rows in set (0.00 sec)
एक क्वेरी में तीनों गणना
mysql> SELECT
SUM(Value IS NULL) AS NumberOfNull,
SUM(Value = 0) AS NumberOfZero,
COUNT(DISTINCT Value > 0) AS ValueExceptZeroAndNull
FROM DemoTable;
परिणाम:
+--------------+--------------+------------------------+ | NumberOfNull | NumberOfZero | ValueExceptZeroAndNull | +--------------+--------------+------------------------+ | 2 | 2 | 2 | +--------------+--------------+------------------------+ 1 row in set (0.00 sec)
व्याख्या: Value IS NULL और Value = 0 बूलियन अभिव्यक्तियां हैं जो TRUE (1) या FALSE (0) लौटाती हैं। SUM() उन्हें जोड़ देता है। COUNT(DISTINCT Value > 0) सकारात्मक अद्वितीय मान गिनता है (10 और 20 = 2)।