目录
9.1 聚集函数
SQL的聚集函数在各种主要SQL实现中得到了相当一致的支持。
聚集函数(aggregate function)对某些行运行的函数,计算并返回一个值。
9.1.1 AVG()函数
下面的例子使用AVG()返回Products表中所有产品的平均价格:
AVG()也可以用来确定特定列或行的平均值。下面的例子返回特定供应商所提供产品的平均价格:
AVG()函数只用于单个列,为了获得多个列的平均值,必须使用多个AVG()函数。
AVG()函数忽略列值为NULL的行。
9.1.2 COUNT()函数
COUNT()函数有两种使用方式:
- 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空
值。
- 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。
下面的例子返回Customers表中顾客的总数:
下面的例子只对具有电子邮件地址的客户计数:
9.1.3 MAX()函数
MAX()返回指定列中的最大值。MAX()要求指定列名,如下所示:
对非数值数据使用MAX()
虽然MAX()一般用来找出最大的数值或日期值,但许多(并非所有)DBMS允许将它用来返回任意列中的最大值,包括返回文本列中的最大值。在用于文本数据时,MAX()返回按该列排序后的最后一行。
- MAX()函数忽略列值为NULL的行。
9.1.4 MIN()函数
除了功能与MAX()函数相反之外,其余都一样。
9.1.5 SUM()函数
计算某笔订单所订购物品的数量总数:
计算某笔订单的总订单金额:
SUM()函数忽略列值为NULL的行。
9.2 聚集不同值(DISTINCT)
以上5个聚集函数都默认对所有行执行计算;若要只包含不同的值,需要制定DISTINCT参数。
注意:Microsoft Access在聚集函数中不支持DISTINCT。
下面的例子使用AVG()函数返回特定供应商提供的产品的平均价格。它与上面的SELECT语句相同,但使用了DISTINCT参数,因此平均值只考虑各个不同的价格:
DISTINCT不能用于COUNT(*),但指定列名,可以用于COUNT()。
DISTINCT必须使用列名,不能用于计算或表达式。
9.3 组合聚集函数
SELECT语句可根据需要包含多个聚集函数,如: