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

MySQL-এ CASE এবং SUM() ব্যবহার করে কলামের ভিন্ন মানগুলোর পৃথক গণনা করা


শর্তসাপেক্ষ এগ্রিগেশন: CASE WHEN WITH SUM()

MySQL-এ একই কলামের ভিন্ন ভিন্ন মানের জন্য পৃথক পৃথক গণনা (count) পাওয়ার জন্য CASE WHEN এক্সপ্রেশন SUM()-এর ভিতরে ব্যবহার করা হয়। এটি পিভট টেবিল (pivot table) তৈরি করার অনুরূপ ফলাফল দেয়।

উদাহরণ: প্রোডাক্ট রেটিংয়ের গণনা

টেবিল তৈরি:

CREATE TABLE DemoTable (
    ProductName VARCHAR(100),
    ProductRating ENUM('1','2','3')
);
INSERT INTO DemoTable VALUES 
('Product-1', 3), ('Product-2', 1), ('Product-3', 2),
('Product-1', 2), ('Product-3', 3), ('Product-2', 2), ('Product-3', 3);

পিভট স্টাইলে কোয়ারি

SELECT 
    ProductName,
    SUM(CASE WHEN ProductRating = 3 THEN 1 ELSE 0 END) AS Rating_3_Count,
    SUM(CASE WHEN ProductRating = 2 THEN 1 ELSE 0 END) AS Rating_2_Count,
    SUM(CASE WHEN ProductRating = 1 THEN 1 ELSE 0 END) AS Rating_1_Count
FROM DemoTable 
GROUP BY ProductName;

আউটপুট:

+-------------+----------------+----------------+----------------+
| ProductName | Rating_3_Count | Rating_2_Count | Rating_1_Count |
+-------------+----------------+----------------+----------------+
| Product-1   | 1              | 1              | 0              |
| Product-2   | 0              | 1              | 1              |
| Product-3   | 2              | 1              | 0              |
+-------------+----------------+----------------+----------------+

ব্যাখ্যা

  • প্রতিটি CASE একটি শর্ত যাচায় এবং মেললে ১, না মেললে ০ রিটার্ন করে।
  • SUM() এই ১ এবং ০ গুলো যোগ করে গণনা করে।
  • GROUP BY ProductName প্রতিটি প্রোডাক্টের জন্য পৃথক রো তৈরি করে।

আধুনিক বিকল্প (MySQL 8.0+)

SELECT 
    ProductName,
    COUNT(*) FILTER (WHERE ProductRating = 3) AS Rating_3_Count,
    COUNT(*) FILTER (WHERE ProductRating = 2) AS Rating_2_Count,
    COUNT(*) FILTER (WHERE ProductRating = 1) AS Rating_1_Count
FROM DemoTable 
GROUP BY ProductName;

FILTER ক্লজ আরও পঠনযোগ্য এবং স্ট্যান্ডার্ড SQL-সামঞ্জস্যপূর্ণ।

  1. MySQL-এ GROUP BY ও ORDER BY ব্যবহার করে যোগফল বের করে সর্ট করা

  2. একটি MySQL কোয়েরি দিয়ে বিভিন্ন কলামের মান থেকে একাধিক শব্দ অনুসন্ধান

  3. MySQL-এ নির্দিষ্ট কলাম থেকে শুধু 'NO' মান সংখ্যা বের করা

  4. MySQL-এ প্রথম ৩ রোয়ের কলাম মান নির্দিষ্ট মান দিয়ে আপডেট করা