इसके लिए CASE स्टेटमेंट का उपयोग करें।
टेबल बनाएं
mysql> create table DemoTable (
-> StudentMarks int,
-> isValid tinyint(1)
-> );
Query OK, 0 rows affected (0.68 sec)
रिकॉर्ड्स डालें
mysql> insert into DemoTable values(45,0); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(78,1); Query OK, 1 row affected (0.26 sec) mysql> insert into DemoTable values(45,1); Query OK, 1 row affected (0.31 sec) mysql> insert into DemoTable values(78,1); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable values(45,0); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(82,1); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(62,1); Query OK, 1 row affected (0.14 sec)
सभी रिकॉर्ड्स देखें
mysql> select * from DemoTable;
+--------------+---------+ | StudentMarks | isValid | +--------------+---------+ | 45 | 0 | | 78 | 1 | | 45 | 1 | | 78 | 1 | | 45 | 0 | | 82 | 1 | | 62 | 1 | +--------------+---------+ 7 rows in set (0.00 sec)
दो शर्तों पर काउंट का क्वेरी
mysql> select StudentMarks,
-> sum(case
-> when StudentMarks=45
-> then case when isValid = 1 then 1 else 0 end
-> else 1 end
-> ) AS Freq
-> from DemoTable
-> group by StudentMarks;
आउटपुट:
+--------------+------+ | StudentMarks | Freq | +--------------+------+ | 45 | 1 | | 78 | 2 | | 82 | 1 | | 62 | 1 | +--------------+------+ 4 rows in set (0.00 sec)
व्याख्या: जब StudentMarks=45 हो, तो केवल isValid=1 वाली पंक्तियों को गिनें। अन्य सभी अंकों के लिए, हर पंक्ति को 1 के रूप में गिनें।