কম্পিউটার টিউটোরিয়াল

MySQL-এ একক কোয়ারিতে দুটি কলামের মান গণনা করা


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) সিনট্যাক্সও ব্যবহার করা যায়, যা আরও পঠনযোগ্য।

  1. MySQL-এ টাইনি ইন্ট কলাম থেকে ০ এবং ১ এর সংখ্যা আলাদা দুটি কলামে দেখানো

  2. একক MySQL কোয়েরিতে দুটি টেবিল থেকে রো কাউন্ট করার পদ্ধতি

  3. MySQL-এ একক কুয়েরিতে একাধিক টেবিলের সারি গণনার যোগফল বের করা

  4. MySQL-এ একক SELECT কোয়েরিতে দুটি টেবিল থেকে ডেটা ফেচ করা