Computer >> Máy Tính >  >> Lập trình >> MySQL

Chúng tôi có thể loại trừ các mục nhập có “0” trong khi sử dụng hàm AVG của MySQL không?

Để loại trừ các mục nhập có “0”, bạn cần sử dụng NULLIF () với hàm AVG ().

Cú pháp như sau

SELECT AVG(NULLIF(yourColumnName, 0)) AS anyAliasName FROM yourTableName;

Đầu tiên chúng ta hãy tạo một bảng

mysql> create table AverageDemo
   - > (
   - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   - > StudentName varchar(20),
   - > StudentMarks int
   - > );
Query OK, 0 rows affected (0.72 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn.

Truy vấn như sau

mysql> insert into AverageDemo(StudentName,StudentMarks) values('Adam',NULL);
Query OK, 1 row affected (0.12 sec)
mysql> insert into AverageDemo(StudentName,StudentMarks) values('Larry',23);
Query OK, 1 row affected (0.19 sec)
mysql> insert into AverageDemo(StudentName,StudentMarks) values('Mike',0);
Query OK, 1 row affected (0.20 sec)
mysql> insert into AverageDemo(StudentName,StudentMarks) values('Sam',45);
Query OK, 1 row affected (0.18 sec)
mysql> insert into AverageDemo(StudentName,StudentMarks) values('Bob',0);
Query OK, 1 row affected (0.12 sec)
mysql> insert into AverageDemo(StudentName,StudentMarks) values('David',32);
Query OK, 1 row affected (0.18 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.

Truy vấn như sau

mysql> select *from AverageDemo;

Sau đây là kết quả

+----+-------------+--------------+
| Id | StudentName | StudentMarks |
+----+-------------+--------------+
|  1 | Adam        |         NULL |
|  2 | Larry       |           23 |
|  3 | Mike        |            0 |
|  4 | Sam         |           45 |
|  5 | Bob         |            0 |
|  6 | David       |           32 |
+----+-------------+--------------+
6 rows in set (0.00 sec)

Sau đây là truy vấn để loại trừ các mục nhập có “0” khi sử dụng AVG

mysql> select AVG(nullif(StudentMarks, 0)) AS Exclude0Avg from AverageDemo;

Sau đây là kết quả

+-------------+
| Exclude0Avg |
+-------------+
| 33.3333     |
+-------------+
1 row in set (0.05 sec)