gì I'am thực hiện:Strange MySQL AVG() giá trị bất thường NULL
create table sample (id INT(10) PRIMARY KEY AUTO_INCREMENT,name varchar(255),marks INT(10));
insert into sample (name,marks) VALUES('sam',10);
insert into sample (name,marks) VALUES('sam',20);
insert into sample (name,marks) VALUES('sam',NULL);
insert into sample (name,marks) VALUES('sam',NULL);
insert into sample (name,marks) VALUES('sam',30);
select AVG(marks) from sample GROUP BY(name);
OUTPUT Tôi DỰ KIẾN:
AVG = (10 + 20 + 30)/5 = 12
OUTPUT của MySQL:
AVG = (10 + 20 + 30)/3 = 20
Lý tưởng nhất là những gì tôi muốn là MYSQL sẽ nhận được tổng số 5 hàng và chia cho 5, nhưng nó chỉ chia bởi 3 (hàng không NULL)
Tại sao điều này xảy ra và tôi có thể làm gì để có được đúng AVG tức là 60/5? PS: Tôi không thể tạo trường đánh dấu NOT NULL, trong thiết kế db của tôi trường đánh dấu được phép là NULL.
Cảm ơn bạn
thêm nhiều hơn lời giải thích và tài liệu tham khảo câu trả lời của tôi – Kaii
nhờ @Kaii đã giúp :) –