MySQL-এ গড় (average) বের করার সময় ০ মান বাদ দিতে NULLIF() ফাংশন AVG()-এর সাথে ব্যবহার করতে হয়।
সিনট্যাক্স
SELECT AVG(NULLIF(yourColumnName, 0)) AS anyAliasName FROM yourTableName;
উদাহরণ
টেবিল তৈরি:
mysql> CREATE TABLE AverageDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20),
-> StudentMarks INT
-> );
ডেটা ইনসার্ট (কয়েকটি ০ সহ):
mysql> INSERT INTO AverageDemo(StudentName, StudentMarks) VALUES('Adam', NULL);
mysql> INSERT INTO AverageDemo(StudentName, StudentMarks) VALUES('Larry', 23);
mysql> INSERT INTO AverageDemo(StudentName, StudentMarks) VALUES('Mike', 0);
mysql> INSERT INTO AverageDemo(StudentName, StudentMarks) VALUES('Sam', 45);
mysql> INSERT INTO AverageDemo(StudentName, StudentMarks) VALUES('Bob', 0);
mysql> INSERT INTO AverageDemo(StudentName, StudentMarks) VALUES('David', 32);
সকল রেকর্ড:
mysql> SELECT * FROM AverageDemo;
+----+-------------+--------------+ | Id | StudentName | StudentMarks | +----+-------------+--------------+ | 1 | Adam | NULL | | 2 | Larry | 23 | | 3 | Mike | 0 | | 4 | Sam | 45 | | 5 | Bob | 0 | | 6 | David | 32 | +----+-------------+--------------+
০ বাদ দিয়ে গড়:
mysql> SELECT AVG(NULLIF(StudentMarks, 0)) AS Exclude0Avg FROM AverageDemo;
+-------------+ | Exclude0Avg | +-------------+ | 33.3333 | +-------------+
ব্যাখ্যা: NULLIF(StudentMarks, 0) হলে ০ হলে NULL রিটার্ন করে। AVG() NULL মান গড়ে অন্তর্ভুক্ত করে না। সুতরাং ০ এবং NULL দুটোই বাদ পড়ে। শুধু ২৩, ৪৫, ৩২ - এই তিনটি মান দিয়ে গড় হয়ে ৩৩.৩৩৩৩।