我有一个数据库表,其中某些单元格为空。我想获取所有列的平均值,但是由于某些原因,空单元格也被计数。
一列有5个空单元格,是5乘以100的值。所以平均值应该是100,但我得到50。我尝试了COALESCE,NVL和“ WHERE column NOT NOT NULL”,但是那没有给我我想要的结果。其他单元格的值是0,必须计数。
这是我的查询(基于复选框选择)
foreach($_POST['aufg'] AS $value) {
$sql .= "AVG({$value}1) as {$value}1, AVG({$value}2) as {$value}2, ";
}
$sql = substr($sql, 0, -2);
$sql .= " FROM table";
答案 0 :(得分:1)
在大多数正常情况下,您根本是错误的。如果这些值是 really NULL
,则将其忽略。因此,如果表有10行包含此数据:
value
100
100
100
100
100
null
null
null
null
null
平均为100。这就是MySQL的工作方式。这就是SQL的工作方式。聚合函数中将忽略NULL
个值。
您所说的正确的一种情况是在以下情况下:
'null'
(字符串)而不是值NULL
。在这种情况下,'null'
值被隐式转换为用于数字计算的数字。给出的值为零。
我不赞成这种可能性,因为数字应该存储为数字而不是字符串。
Here是db <>小提琴。