内置聚合函数

1.语法

聚合函数调用:

aggregate-func ( DISTINCT expr ) filter-clause , *

表达式:

过滤器子句:

默认情况下,下面显示的聚合函数可用。可以使用 sqlite3_create_function() API 添加用 C 编写的其他聚合函数。

在任何采用单个参数的聚合函数中,该参数前面可以加上关键字 DISTINCT。在这种情况下,重复元素在传递到聚合函数之前会被过滤掉。例如,函数“count(distinct X)”将返回列 X 的不同值的数量,而不是列 X 中非空值的总数。

如果提供了 FILTER 子句,则只有expr为真的行才会包含在聚合中。

2.内置聚合函数列表

3.内置聚合函数说明

avg(X)

avg() 函数返回组内所有非 NULL X 的平均值看起来不像数字的字符串和 BLOB 值被解释为 0。只要存在至少一个非 NULL 输入,即使所有输入都是整数,avg() 的结果始终是一个浮点值。当且仅当没有非 NULL 输入时,avg() 的结果才为 NULL。

count(X)
count(*)

count(X) 函数返回X在组中不为 NULL 的次数。count(*) 函数(不带参数)返回组中的总行数。

group_concat( X )
group_concat( X , Y )

group_concat() 函数返回一个字符串,它是X 的所有非 NULL 值的串联如果存在参数Y,则将其用作X实例之间的分隔符。如果省略Y,则使用逗号 (",") 作为分隔符。串联元素的顺序是任意的。

max(X)

max() 聚合函数返回组中所有值的最大值。最大值是在同一列的 ORDER BY 中最后返回的值。当且仅当组中没有非 NULL 值时,聚合 max() 返回 NULL。

min(X)

min() 聚合函数返回组中所有值的最小非 NULL 值。最小值是将出现在列的 ORDER BY 中的第一个非 NULL 值。当且仅当组中没有非 NULL 值时,聚合 min() 返回 NULL。

sum(X)
total(X)

sum() 和 total() 聚合函数返回组中所有非 NULL 值的总和。如果没有非 NULL 输入行,则 sum() 返回 NULL,但 total() 返回 0.0。NULL 对于没有行的总和通常不是一个有用的结果,但是 SQL 标准要求它并且大多数其他 SQL 数据库引擎以这种方式实现 sum() 因此 SQLite 以相同的方式执行它以便兼容。提供了非标准的 total() 函数作为在 SQL 语言中解决此设计问题的便捷方法。

total() 的结果始终是一个浮点值。如果所有非 NULL 输入都是整数,则 sum() 的结果是一个整数值。如果 sum() 的任何输入既不是整数也不是 NULL,则 sum() 返回一个浮点值,该值是数学和的近似值。

如果所有输入都是整数或 NULL 并且在计算过程中的任何时候发生整数溢出,Sum() 将抛出“整数溢出”异常。Total() 从不抛出整数溢出。