MySQL में IF() और SUM() का उपयोग करके शर्ती गणना (conditional counting) करके वर्ष के अनुसार उपस्थित और अनुपस्थित छात्रों की संख्या प्राप्त की जा सकती है।
उदाहरण
उपस्थिति तालिका बनाएं:
mysql> CREATE TABLE DemoTable (
-> Attendance VARCHAR(20),
-> CurrentYear INT
-> );
डेटा डालें:
mysql> INSERT INTO DemoTable VALUES
-> ('Present', 2019), ('Absent', 2019), ('Absent', 2017),
-> ('Present', 2019), ('Present', 2018), ('Present', 2019);
डेटा
+------------+-------------+
| Attendance | CurrentYear |
+------------+-------------+
| Present | 2019 |
| Absent | 2019 |
| Absent | 2017 |
| Present | 2019 |
| Present | 2018 |
| Present | 2019 |
+------------+-------------+
क्वेरी: 2019 के लिए उपस्थित/अनुपस्थित गिनती
mysql> SELECT
-> SUM(IF(Attendance = 'Present', 1, 0)) AS Present,
-> SUM(IF(Attendance = 'Absent', 1, 0)) AS Absent
-> FROM DemoTable
-> WHERE CurrentYear LIKE '2019%';
परिणाम
+---------+--------+
| Present | Absent |
+---------+--------+
| 3 | 1 |
+---------+--------+
व्याख्या
IF(Attendance = 'Present', 1, 0)- उपस्थित तो 1, अन्यथा 0SUM()- सभी 1 का योग = गिनतीWHERE CurrentYear LIKE '2019%'- केवल 2019 के लिए
विकल्प: CASE WHEN
SELECT
SUM(CASE WHEN Attendance = 'Present' THEN 1 ELSE 0 END) AS Present,
SUM(CASE WHEN Attendance = 'Absent' THEN 1 ELSE 0 END) AS Absent
FROM DemoTable
WHERE CurrentYear = 2019;
विकल्प: GROUP BY
SELECT Attendance, COUNT(*) AS Count
FROM DemoTable
WHERE CurrentYear = 2019
GROUP BY Attendance;
परिणाम: दो पंक्तियां - Present: 3, Absent: 1