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

MySQL-এ সকল সারি NULL না হলে SUM করুন, অন্যথায় NULL ফেরত দিন

MySQL-এ আপনি GROUP BY HAVING ক্লজ ব্যবহার করে এই কাজটি সম্পন্ন করতে পারেন। সিনট্যাক্স নিচে দেওয়া হল:

SELECT yourColumnName1, SUM(yourColumnName2)
FROM yourTableName
GROUP BY yourColumnName1
HAVING COUNT(yourColumnName2) = COUNT(*);

উদাহরণের সাথে ব্যাখ্যা

প্রথমে একটি টেবিল তৈরি করি:

CREATE TABLE SumDemo (
    Id INT,
    Amount INT
);

এখন কিছু রেকর্ড যোগ করি:

INSERT INTO SumDemo VALUES (1, 200);
INSERT INTO SumDemo VALUES (2, 100);
INSERT INTO SumDemo VALUES (2, NULL);
INSERT INTO SumDemo VALUES (1, 300);
INSERT INTO SumDemo VALUES (2, 100);
INSERT INTO SumDemo VALUES (1, 500);

টেবিলের সব ডেটা দেখতে:

SELECT * FROM SumDemo;

আউটপুট

+------+--------+
| Id   | Amount |
+------+--------+
| 1    | 200    |
| 2    | 100    |
| 2    | NULL   |
| 1    | 300    |
| 2    | 100    |
| 1    | 500    |
+------+--------+

এখন সারিগুলো NULL না হলে SUM করার কোয়েরি:

SELECT Id, SUM(Amount)
FROM SumDemo
GROUP BY Id
HAVING COUNT(Amount) = COUNT(*);

ফলাফল

Id 2-এ NULL মান থাকায় সেটি বাদ পড়ে। শুধু Id 1-এর মানের যোগফল দেখায়:

+------+-------------+
| Id   | SUM(Amount) |
+------+-------------+
| 1    | 1000        |
+------+-------------+

ব্যাখ্যা: Id 1-এর জন্য 200 + 300 + 500 = 1000। Id 2-এর একটি সেলে NULL থাকায় COUNT(Amount) ≠ COUNT(*) হয়, তাই HAVING ক্লজ সেটি ফিল্টার করে দেয়।

  1. MySQL-এ GROUP_CONCAT() ব্যবহার করে একাধিক রোকে একক স্ট্রিংয়ে জড়ানো (সিংগেল রো আউটপুট)

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

  3. MySQL-এ কলাম NULL হলে আপডেট করা, অন্যথায় অন্য কলাম আপডেট করা

  4. MySQL-এ IF ফাংশন ব্যবহার করে পজিটিভ মানের জন্য TRUE ফেরত দেওয়া