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

MySQL-এ COUNT() এবং IF() একসাথে ব্যবহার করে শর্তসাপেক্ষ গুননা


COUNT(IF(...)) প্যাটার্ন দিয়ে শর্তভিত্তিক গণনা

MySQL-এ COUNT() শুধু নন-নাল মান গুনে। IF(condition, value_if_true, value_if_false) ব্যবহার করে শর্ত পূরণ করলে ১ (নন-নাল), না করলে NULL রিটার্ন করিয়ে শর্তসাপেক্ষ গুননা করা যায়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (isValidUser BOOLEAN);
mysql> INSERT INTO DemoTable VALUES(TRUE), (FALSE), (FALSE), (TRUE), (TRUE), (TRUE), (FALSE);

সব রেকর্ড (1 = TRUE, 0 = FALSE)

+-------------+
| isValidUser |
+-------------+
| 1           |
| 0           |
| 0           |
| 1           |
| 1           |
| 1           |
| 0           |
+-------------+

COUNT + IF কোয়েরি

mysql> SELECT COUNT(IF(isValidUser = 1, 1, NULL)) AS TOTAL_NUMBER_OF_ONE FROM DemoTable;
+---------------------+
| TOTAL_NUMBER_OF_ONE |
+---------------------+
| 4                   |
+---------------------+

ব্যাখ্যা

  • IF(isValidUser=1, 1, NULL) — TRUE হলে ১ রিটার্ন করে (গুনা যাবে), FALSE হলে NULL (গুনা যাবে না)।
  • COUNT() শুধু নন-নাল মান গুনে, তাই শুধু TRUE গুনা পড়েছে।

আধুনিক বিকল্প (MySQL 8.0+)

SELECT SUM(isValidUser = 1) AS total_true FROM DemoTable;

বুলিয়ান এক্সপ্রেশন isValidUser = 1 TRUE হলে ১, FALSE হলে ০ রিটার্ন করে, SUM() দিয়ে সরাসরি যোগফল পাওয়া যায়।

  1. MySQL SELECT কোয়ারিতে এলিয়াস (alias) ব্যবহার করার পদ্ধতি

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

  3. MySQL-এ COUNT() এর ভিতরে CASE শর্ত ব্যবহার করে গণনা করা

  4. MySQL-এ ORDER BY FIELD() এবং ID দিয়ে সেকেন্ডারি সর্টিং একসাথে করুন