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() দিয়ে সরাসরি যোগফল পাওয়া যায়।