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

MySQL-এ CASE স্টেটমেন্ট ব্যবহার করে একক কোয়েরিতে একাধিক COUNT() বাস্তবায়ন করা

MySQL-এ একক কোয়েরিতে একাধিক শর্তভিত্তিক গণনা (conditional count) করতে CASE এক্সপ্রেশন COUNT()-এর ভিতরে ব্যবহার করা হয়।

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> LastName VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.60 sec)
mysql> INSERT INTO DemoTable VALUES('Smith');
mysql> INSERT INTO DemoTable VALUES('Brown');
mysql> INSERT INTO DemoTable VALUES('Brown');
mysql> INSERT INTO DemoTable VALUES('Smith');
mysql> INSERT INTO DemoTable VALUES('Taylor');
mysql> INSERT INTO DemoTable VALUES('Taylor');
mysql> INSERT INTO DemoTable VALUES('Miller');
mysql> INSERT INTO DemoTable VALUES('Miller');
mysql> INSERT INTO DemoTable VALUES('Miller');

সব রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট

+----------+
| LastName |
+----------+
| Smith    |
| Brown    |
| Brown    |
| Smith    |
| Taylor   |
| Taylor   |
| Miller   |
| Miller   |
| Miller   |
+----------+
9 rows in set (0.00 sec)

CASE WHEN দিয়ে একাধিক COUNT একসাথে

mysql> SELECT 
    -> COUNT(CASE WHEN LastName = 'Smith' THEN 1 END) AS TotalFrequency,
    -> COUNT(CASE WHEN LastName = 'Brown' THEN 1 END) AS TotalFrequency,
    -> COUNT(CASE WHEN LastName = 'Taylor' THEN 1 END) AS TotalFrequency,
    -> COUNT(CASE WHEN LastName = 'Miller' THEN 1 END) AS TotalFrequency
    -> FROM DemoTable;

আউটপুট

+----------------+----------------+----------------+----------------+
| TotalFrequency | TotalFrequency | TotalFrequency | TotalFrequency |
+----------------+----------------+----------------+----------------+
| 2              | 2              | 2              | 3              |
+----------------+----------------+----------------+----------------+
1 row in set (0.00 sec)

ব্যাখ্যা: CASE WHEN condition THEN 1 END — শর্ত পূরণ হলে ১ রিটার্ন করে, না হলে NULL রিটার্ন করে। COUNT() শুধু নন-NULL মান গণনা করে, তাই শর্ত পূরণকারী রোরা গণনা হয়।

উন্নত সিনট্যাক্স (এলিয়াস ভিন্ন রাখা):

SELECT 
  COUNT(CASE WHEN LastName = 'Smith' THEN 1 END) AS SmithCount,
  COUNT(CASE WHEN LastName = 'Brown' THEN 1 END) AS BrownCount,
  COUNT(CASE WHEN LastName = 'Taylor' THEN 1 END) AS TaylorCount,
  COUNT(CASE WHEN LastName = 'Miller' THEN 1 END) AS MillerCount
FROM DemoTable;

বিকল্প (MySQL 8.0+): SUM(LastName = 'Smith') — বুলিয়ান TRUE=১, FALSE=০, তাই SUM দিয়েই গণনা হয়।

  1. MySQL-এ GREATEST() দিয়ে একাধিক কলাম একসাথে সর্ট করা

  2. MySQL-এ একাধিক LIKE অপারেটর একসাথে ব্যবহার করা (OR কন্ডিশন সহ)

  3. MySQL-এ একাধিক কলাম একসাথে আপডেট করা (সিঙ্গল কুয়েরি)

  4. MySQL에서 SUM(조건)으로 특정 값 카운트 한 번에 여러 개 구하기