SUM(IF()) के साथ एक क्वेरी में एकाधिक कॉलम की सशर्त गणना
एक ही क्वेरी में अलग-अलग कॉलम पर अलग-अलग शर्तों की गणना करने के लिए SUM(IF(condition, 1, 0)) पैटर्न का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable (
FirstName VARCHAR(100),
LastName VARCHAR(100)
);
Query OK, 0 rows affected (2.80 sec)
mysql> INSERT INTO DemoTable VALUES('Adam','Smith');
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO DemoTable VALUES('John','Smith');
Query OK, 1 row affected (0.36 sec)
mysql> INSERT INTO DemoTable VALUES('John','Doe');
Query OK, 1 row affected (1.38 sec)
mysql> INSERT INTO DemoTable VALUES('Bob','Doe');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('Sam','Smith');
Query OK, 1 row affected (0.25 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | Adam | Smith | | John | Smith | | John | Doe | | Bob | Doe | | Sam | Smith | +-----------+----------+ 5 rows in set (0.00 sec)
एक क्वेरी में दो गणनाएं
mysql> SELECT
SUM(IF(FirstName='John',1,0)) AS John_Count,
SUM(IF(LastName='Smith',1,0)) AS Smith_Count
FROM DemoTable;
परिणाम:
+------------+-------------+ | John_Count | Smith_Count | +------------+-------------+ | 2 | 3 | +------------+-------------+ 1 row in set (0.00 sec)
व्याख्या: 'John' दो बार (पंक्ति 2,3)। 'Smith' तीन बार (पंक्ति 1,2,5)। IF शर्त पूरी होने पर 1, अन्यथा 0 देता है। SUM उन्हें जोड़ता है।
आधुनिक विकल्प: SUM(FirstName='John') भी काम करता है क्योंकि बूलियन TRUE=1, FALSE=0 होता है।