Small. Fast. Reliable.
Choose any three.
内置汇总功能

1.语法

集合函数调用:

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

expr:

过滤器子句:

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

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

如果提供了FILTER子句,则聚合中仅包含expr为true的行。

2.内置聚合函数列表

3.内置聚合函数的描述

平均(X

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

count(X
count(*)

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

group_concat(X
group_concat(XY

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

最大(X

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

最小(X

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

总和(X
合计(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()永远不会引发整数溢出。