Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过忽略null/empty值在Sqlite中查找平均值_Sql_Sqlite_Where Clause - Fatal编程技术网

通过忽略null/empty值在Sqlite中查找平均值

通过忽略null/empty值在Sqlite中查找平均值,sql,sqlite,where-clause,Sql,Sqlite,Where Clause,这是我的数据库 身份证件 做记号 1. 80 2. 60 1. 2. 80 AVG默认情况下忽略空值,因此如果mark的空/空值为空,则代码将按预期工作。 看 因此,该空/blankvalue要么是空格,要么包含空格,当它执行数值计算时,以及在诸如AVG之类的聚合函数中使用时,SQLite会隐式地将其转换为0 最好的方法是更新表,以便将这些空/空白值替换为空值: 然后,您可以使用代码,而不必满足mark不为NULL的条件。 请参阅。您可以调整WHERE子句。一个简单的方法是: SELECT id

这是我的数据库

身份证件 做记号 1. 80 2. 60 1. 2. 80 AVG默认情况下忽略空值,因此如果mark的空/空值为空,则代码将按预期工作。 看

因此,该空/blankvalue要么是空格,要么包含空格,当它执行数值计算时,以及在诸如AVG之类的聚合函数中使用时,SQLite会隐式地将其转换为0

最好的方法是更新表,以便将这些空/空白值替换为空值:

然后,您可以使用代码,而不必满足mark不为NULL的条件。 请参阅。

您可以调整WHERE子句。一个简单的方法是:

SELECT id as dd,AVG(mark) as avg 
FROM  Mark_O 
WHERE mark > 0
GROUP BY id;
但这不允许显式使用“0”标记。如果您想允许这样做,那么您需要知道缺少的值是什么。如果是空字符串:

SELECT id as dd,AVG(mark) as avg 
FROM  Mark_O 
WHERE mark <> ''
GROUP BY id;

请注意,这两个条件也会过滤掉空行。但是,它们无论如何都不会计入平均值。

这与java有什么关系?如果标记不为NULL,并且标记为“”,您确定空白单元格不是0零值,并且单元格的呈现才是问题所在吗?尝试标记0的位置。-或者,正如Sergey所建议的,该值是一个空字符串,而不是一个数字。但为什么要在非数字列上执行AVG,所以这不可能,不是吗?SQLite的乐趣很奇怪,更不用说坏数据类型处理了。。。这基本上在所有其他数据库中都能正常工作,例如Postgres@Mohamed不会在表中保留空白值。更新该表并将其全部替换为空值。如果没有,则必须在每个聚合查询中添加条件。
SELECT id as dd,AVG(mark) as avg 
FROM  Mark_O 
WHERE mark <> ''
GROUP BY id;