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

MySQL-এ COUNT() ব্যবহার না করেই একাধিক গুননা করা

গুননার জন্য SUM() সহ CASE স্টেটমেন্ট ব্যবহার করা হয়। প্রথমে একটি টেবিল তৈরি করি:

mysql> create table DemoTable1485 (
    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(20),
    -> StudentSubject varchar(20)
    -> );
Query OK, 0 rows affected (0.72 sec)

রেকর্ড ইনসার্ট করি:

mysql> insert into DemoTable1485(StudentName,StudentSubject) values('Chris','MySQL');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1485(StudentName,StudentSubject) values('Robert','MongoDB');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable1485(StudentName,StudentSubject) values('Robert','MongoDB');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable1485(StudentName,StudentSubject) values('Chris','Java');
Query OK, 1 row affected (0.12 sec)

সব রেকর্ড দেখি:

mysql> select * from DemoTable1485;

আউটপুট:

+-----------+-------------+----------------+
| StudentId | StudentName | StudentSubject |
+-----------+-------------+----------------+
|         1 | Chris       | MySQL          |
|         2 | Robert      | MongoDB        |
|         3 | Robert      | MongoDB        |
|         4 | Chris       | Java           |
+-----------+-------------+----------------+
4 rows in set (0.00 sec)

COUNT() ছাড়া শর্তসাপেক্ষ গুননার কোয়েরি:

mysql> select StudentSubject,
    -> sum(case when StudentName = 'Chris' THEN 1 ELSE 0 END) Chris_Count,
    -> sum(case when StudentName = 'Robert' THEN 1 ELSE 0 END) Robert_Count
    -> from DemoTable1485
    -> group by StudentSubject;

আউটপুট:

+----------------+-------------+--------------+
| StudentSubject | Chris_Count | Robert_Count |
+----------------+-------------+--------------+
| MySQL          |           1 |            0 |
| MongoDB        |           0 |            2 |
| Java           |           1 |            0 |
+----------------+-------------+--------------+
3 rows in set (0.00 sec)

টেকনিক: MySQL-এ TRUE=1, FALSE=0, তাই SUM(condition) দিয়ে শর্ত পূরণ করা সারির সংখ্যা পাওয়া যায়। এটি পিভট টেবিল বা ক্রস-ট্যাব রিপোর্টের জন্য আদর্শ।

  1. MySQL কোয়েরি: AND OR ব্যবহার করে নির্বাচন করা

  2. MySQL IN()-এ কেস-ইনসেনসিটিভ SELECT করা

  3. MySQL-এ mysqldump ছাড়া ডাটাবেস ডুপ্লিকেট করা (CREATE TABLE ... SELECT)

  4. MySQL-এ একাধিক টেবিল থেকে COUNT(*) একসাথে বের করা (DUAL টেবিল ব্যবহার করে)