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 গড়ে না)।