CASE এবং SUM() ফাংশন ব্যবহার করে শর্তসাপেক্ষ গণনা
MySQL-এ একই কোয়ারিতে একাধিক শর্তের উপর ভিত্তি করে রেকর্ড গণনা করার জন্য CASE স্টেটমেন্ট এবং SUM() ফাংশন একসাথে ব্যবহার করা হয়। এটি বিশেষ করে প্রcondition-based counting-এর জন্য কার্যকর।
উদাহরণ: কর্মচারীদের লিঙ্গভিত্তিক গণনা
প্রথমে একটি টেবিল তৈরি করা যাক:
CREATE TABLE DemoTable (
EmployeeGender ENUM('Male', 'Female')
);
নমুনা ডেটা ইনসার্ট করা যাক:
INSERT INTO DemoTable VALUES ('Male');
INSERT INTO DemoTable VALUES ('Female');
INSERT INTO DemoTable VALUES ('Male');
INSERT INTO DemoTable VALUES ('Female');
INSERT INTO DemoTable VALUES ('Male');
INSERT INTO DemoTable VALUES ('Female');
সকল রেকর্ড দেখা যাক:
SELECT * FROM DemoTable;
আউটপুট:
+----------------+
| EmployeeGender |
+----------------+
| Male |
| Female |
| Male |
| Female |
| Male |
| Female |
+----------------+
গণনার কোয়ারি
SELECT
SUM(CASE WHEN EmployeeGender = 'Male' THEN 1 ELSE 0 END) AS Total_Male_Employees,
SUM(CASE WHEN EmployeeGender = 'Female' THEN 1 ELSE 0 END) AS Total_Female_Employees
FROM DemoTable;
আউটপুট:
+----------------------+------------------------+
| Total_Male_Employees | Total_Female_Employees |
+----------------------+------------------------+
| 3 | 3 |
+----------------------+------------------------+
ব্যাখ্যা
CASE WHEN ... THEN 1 ELSE 0 END: শর্ত পূরণ হলে ১ রিটার্ন করে, অন্যথায় ০।SUM(): এই ১ এবং ০ গুলোর যোগফল নেয়, যা বাস্তবে গণনাটি।- এই পদ্ধতিতে একাধিক শর্তের জন্য পৃথক পৃথক কলাম তৈরি করা যায়।
বিকল্প: MySQL 8.0+ এ COUNT(*) FILTER (WHERE condition) সিনট্যাক্সও ব্যবহার করা যায়, যা আরও পঠনযোগ্য।