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 ক্লজ সেটি ফিল্টার করে দেয়।