首页 > 解决方案 > 通过忽略空/空值在 Sqlite 中查找 AVG

问题描述

这是我的数据库

ID 标记
1 80
2 60
1
2 80

我的代码:

SELECT id as dd,AVG(mark) as avg 
FROM  Mark_O 
WHERE mark IS NOT NULL 
GROUP BY id

输出

ID 标记
1 40
2 70

我怎么能得到这个

ID 标记
1 80
2 70

标签: sqlsqlitewhere-clause

解决方案


AVG()默认情况下会忽略NULLs,因此如果是空值/空白值,markNULL的代码将按预期工作。
请参阅演示

因此,该空/空白值要么是要么''包含空格,并且 SQLite0在执行数字计算时以及在用于聚合函数(如AVG().

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

UPDATE Mark_O
SET mark = NULL
WHERE TRIM(mark) = ''

然后,您可以在没有条件的情况下使用您的代码WHERE mark IS NOT NULL
请参阅演示


推荐阅读