私がやっていること:
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 の出力:
平均値 = (10+20+30)/3 = 20
理想的には、MYSQL は 5 行の合計を取得して 5 で割る必要がありますが、3 で割るだけです (非 NULL 行)。
なぜこれが発生し、正しい AVG、つまり 60/5 を取得するにはどうすればよいですか? PS: マーク フィールドを NOT NULL にすることはできません。私のデータベース設計では、マーク フィールドを NULL にすることが許可されています。
ありがとうございました