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

MySQL-এ একক কোয়েরিতে দুটি ভিন্ন কলাম কাউন্ট করা

MySQL-এ একক কোয়েরিতে দুটি ভিন্ন কলামের শর্তভিত্তিক কাউন্ট করতে CASE WHEN এক্সপ্রেশন SUM()-এর সাথে ব্যবহার করা হয়।

উদাহরণ

টেবিল তৈরি:

mysql> CREATE TABLE CountDifferentDemo (
    -> ProductId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ProductName VARCHAR(20),
    -> ProductColor VARCHAR(20),
    -> ProductDescription VARCHAR(20)
    -> );

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

mysql> INSERT INTO CountDifferentDemo(ProductName, ProductColor, ProductDescription) VALUES
    -> ('Product-1', 'Red', 'Used'),
    -> ('Product-1', 'Blue', 'Used'),
    -> ('Product-2', 'Green', 'New'),
    -> ('Product-2', 'Blue', 'New'),
    -> ('Product-3', 'Green', 'New'),
    -> ('Product-4', 'Blue', 'Used');

সকল রেকর্ড:

mysql> SELECT * FROM CountDifferentDemo;
+-----------+-------------+--------------+--------------------+
| ProductId | ProductName | ProductColor | ProductDescription |
+-----------+-------------+--------------+--------------------+
|  1        | Product-1   | Red          | Used               |
|  2        | Product-1   | Blue         | Used               |
|  3        | Product-2   | Green        | New                |
|  4        | Product-2   | Blue         | New                |
|  5        | Product-3   | Green        | New                |
|  6        | Product-4   | Blue         | Used               |
+-----------+-------------+--------------+--------------------+

প্রোডাক্ট নাম অনুযায়ী "Red" কালার এবং "New" ডেসক্রিপশন কাউন্ট:

mysql> SELECT ProductName,
    -> SUM(CASE WHEN ProductColor = 'Red' THEN 1 ELSE 0 END) AS Color,
    -> SUM(CASE WHEN ProductDescription = 'New' THEN 1 ELSE 0 END) AS Description
    -> FROM CountDifferentDemo
    -> GROUP BY ProductName;
+-------------+-------+-------------+
| ProductName | Color | Description |
+-------------+-------+-------------+
| Product-1   |     1 |           0 |
| Product-2   |     0 |           2 |
| Product-3   |     0 |           1 |
| Product-4   |     0 |           0 |
+-------------+-------+-------------+

ব্যাখ্যা: CASE WHEN condition THEN 1 ELSE 0 END শর্ত পূরণ করলে ১ রিটার্ন করে, না করলে ০। SUM() দিয়ে সেগুলো যোগ করলে শর্ত পূরণ করা রোয়ের সংখ্যা পাওয়া যায়। এটি COUNT(CASE WHEN ... THEN 1 END)-ও করা যায় (NULL গড়ে না)।

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

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

  3. MySQL-এ CASE স্টেটমেন্ট দিয়ে কাস্টম সর্টিং (দুই কলাম)

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