第12章:汇总数据

表名:products
字段:product_id、product_name、product_price、vend_id(供应商)

12.1聚集函数:

我们常常需要汇总数据,而不是把数据检索出来,MySQL提供了专门的函数。

检索例子:

  • 确定表中行数
  • 获得表中行组的和
  • 找出表列

MySQL提供了5个聚集函数。

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

函数说明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值之和

12.1.1AVG()函数:

查出所有产品价格的平均值

SELECT AVG(product_price) AS avg FROM products

注:AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出,为了获得多个列的平均值,必须使用多个AVG()函数。

12.1.2COUNT()函数:

COUNT()有两种用法:

  • COUNT(*)对表中所有行的数目进行计数。
  • COUNT(column)对某一列的行的数目进行计数。

返回所有产品的数目:

SELECT COUNT(*) FROM products

返回供应商所在行的数目:

SELECT COUNT(vend_id) FROM products

注:COUNT(column)如果指定某一列,如果列上有null,则会忽略该行;但是COUNT(*)不会。

MAX():求某一列上的最大值(最大数值或日期,对于文本数据返回最后一行,会自动忽略null值行)。

MIN():求某一列上的最小值(最小值与最小日期,对于文本数据返回第一行,会自动忽略null值行)。

SUM():求某一列上的所有值之和(会自动忽略null值行)。

12.2聚集不同值:

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

  • 对所有的行执行计算,指定ALL参数(默认指定,也就是说不需要指定)
  • 对包含不同的值,指定DISTINCT参数

查找所有不同价格的价格平均值

SELECT AVG(DISTINCT product_price) FROM products

注:如果指定列名,则DISTINCT只能用于COUNT()。

12.3组合聚集函数:

示例:

SELECT AVG(product_price) AS avg,COUNT(product_id) AS count,
MAX(product_price) AS max,MIN(product_price) AS min, SUM(product_price) AS sum FROM products

相关推荐