sqlite SELECT AVG返回null
有人知道为什么SQL SELECT查询在从空表中选择时不返回行,但在尝试从空表中的列中选择平均值时返回sqlite SELECT AVG返回null,sql,sqlite,average,Sql,Sqlite,Average,有人知道为什么SQL SELECT查询在从空表中选择时不返回行,但在尝试从空表中的列中选择平均值时返回?行为上的差异对我来说似乎很奇怪。如果这有什么不同的话,我正在使用sqlite数据库 以下是两个问题: 正常选择:从表1中选择一个 如果表1是空的,我就不会返回任何行 平均值选择:从表1中选择平均值(a) 如果表1为空,则返回一行 我不是正数,但要确定平均数,必须除以行数。如果行数为零,则除以它将是未定义的。因此,NULL返回。只是猜测。你在做一个聚合。由于聚合是为0-n行定义的(在本例中,0行
如果表1为空,则返回一行
SELECT Salesperson, AVG(Sale)
FROM Sales
GROUP BY Salesperson
然后我希望您不会返回任何行,因为没有任何内容可以满足非聚合选择。来自ANSI 92规范
b) 如果平均值、最大值、最小值或总和为
那么
Case:
i) If TXA is empty, then the result is the null value.
更多信息请访问:AVG是一个与COUNT类似的聚合函数。如果您这样做: 从表1中选择COUNT(a),您希望得到一个零行 这与AVG、SUM等相同。您将获得聚合函数结果的一行