【发布时间】:2012-12-24 11:40:23
【问题描述】:
我在做什么:
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);
我预期的输出:
平均数 = (10+20+30)/5 = 12
MYSQL 的输出:
AVG = (10+20+30)/3 = 20
理想情况下,我想要的是 MYSQL 应该得到 5 行的总和并将其除以 5,但它只除以 3(非 NULL 行)
为什么会发生这种情况,我该怎么做才能获得正确的 AVG,即 60/5? PS:我不能将标记字段设为 NOT NULL,在我的数据库设计中,标记字段允许为 NULL。
谢谢
【问题讨论】: