小. 快速. 可靠.
选择任意三个.
内置汇总功能

1. Syntax

aggregate-function-invocation:

syntax diagram aggregate-function-invocation

expr:

filter-clause:

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

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

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

2. List of built-in aggregate functions

3. Descriptions of built-in aggregate functions

avg(X)

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

count(X)
count(*)

is not NULL in a group. count(X)函数返回在组中不为NULL的次数的计数. count(*)函数(不带参数)返回组中的总行数.

group_concat(X)
group_concat(X,Y)

. group_concat()函数返回一个字符串,该字符串是的所有非NULL值的串联. is present then it is used as the separator between instances of . 如果参数存在,则将其用作实例之间的分隔符. is omitted. 如果省略 ,则使用逗号(",")作为分隔符. 串联元素的顺序是任意的.

max(X)

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

min(X)

min()聚合函数返回组中所有值的最小非空值. 最小值是列的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()永远不会引发整数溢出.

by  ICOPY.SITE