聚集函数

聚集函数:运行在行组上,计算和返回单个值的函数。
SQL聚集函数如下:

函数

说明

AVG()

返回某列的平均值

COUNT()

返回某列的行数

MAX()

返回某列的最大值

MIN()

返回某列的最小值

SUM()

返回某列值之和

1、AVG()函数

输入

SELECT AVG(price) AS Avg_price FROM shop;输出

mysql 根据统计每个产品的总数_MySQL


此条语句返回的便是所有产品的平均价格。

注意:AVG()函数忽略列值为NULL的行。2、COUNT()函数

COUNT()函数有两种使用方式:

①使用COUNT(*)对表中行的数目进行计数,不管列表中包含的是空值还是非空值;

②使用COUNT(column)对特定列中具有值的行数进行计数,忽略NULL值。

输入

SELECT COUNT(*) AS product_num FROM shop;输出

mysql 根据统计每个产品的总数_函数返回_02


3、MAX()函数

MAX()返回指定列中的最大值,MAX()要求指定列名。

输入

SELECT MAX(price) AS Max_price FROM shop;

输出

mysql 根据统计每个产品的总数_MySQL_03


这里,MAX()返回了所有商品中的最贵的商品的价格。

注:

①MySQL允许将MAX()用来返回任意列中的最大值,包括返回文本列中的最大值。在用于文本数据时,如果数据按照相应的列排序,则MAX()返回最后一行。

输入

SELCT MAX(name) FROM shop;

输出

mysql 根据统计每个产品的总数_函数返回_04


②MAX()忽略列值为NULL的行。

4、MIN()函数
用法与MAX()函数相同。

5、SUM()函数

SUM()用来返回指定列值的和。

输入

SELECT SUM(price) AS total FROM shop;输出

mysql 根据统计每个产品的总数_MySQL_05


注:SUM()函数忽略列值为NULL的行。

聚集不同值

以上5个聚集函数都可以如下使用:

①对所有行执行计算,指定ALL参数或不给参数(因为ALL是默认行为);

②只包含不同的值,指定DISTINCT参数。

下面的例子使用AVG()函数返回产品的平均价格,但使用了DISTINCT参数,因此平均值只考虑各个不同的价格:

输入

SELECT AVG(DISTINCT price) AS Avg_price FROM shop;输出

mysql 根据统计每个产品的总数_MySQL_06


注:

①如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT不能用于COUNT(*),因此不允许使用COUNT(DISTINCT),否则会产生错误。类似地,DISTINCT必须使用列名,不能用于计算或表达式;

②虽然DISTINCT从技术上可以用于MAX()和MIN(),但这样做没有实际价值,一个列中的最小值和最大值不管是否包含不同值都是相同的。

组合聚集函数

输入

SELECT COUNT(*) AS product_num,MIN(price) AS min_price,MAX(price) AS max_price, AVG(price) AS avg_price FROM shop;输出

mysql 根据统计每个产品的总数_最小值_07