工学1号馆

home

MySQL汇总数据

Wu Yudong    July 03, 2017     MySQL   626   

本文介绍什么是SQL的聚集函数以及如何利用它们汇总表的数据。

1、聚集函数

我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数, MySQL查询可用于检索数据,以便分析和报表生成。这种类型的检索例子有以下几种。

  • 确定表中行数(或者满足某个条件或包含某个特定值的行数)。
  • 获得表中行组的和。
  • 找出表列(或所有行或某些特定的行)的最大值、最小值和平均值

(1)AVG()函数

AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值。 AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。

下面的例子使用AVG()返回products表中所有产品的平均价格:

mysql> select avg(prod_price) as avg_price
-> from products;

AVG()也可以用来确定特定列或行的平均值。 下面的例子返回特定供应商所提供产品的平均价格:

mysql> select avg(prod_price) as avg_price
-> from products
-> where vend_id=1003;

(2)COUNT()函数

COUNT()函数进行计数。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。

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

  • ‰ 使用COUNT(*)对表中行的数目进行计数, 不管表列中包含的是空值(NULL)还是非空值。
  • ‰ 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

下面的例子返回customers表中客户的总数:

mysql> select count(*) as num_cust
-> from customers;

(3)MAX()函数

MAX()返回指定列中的最大值。 MAX()要求指定列名,如下所示:

mysql> select max(prod_price) as max_price
-> from products;

4、MIN()函数

MIN()的功能正好与MAX()功能相反,它返回指定列的最小值。与MAX()一样, MIN()要求指定列名,如下所示:

mysql> select min(prod_price) as min_price
-> from products;

5、SUM()函数

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

下面举一个例子, orderitems表包含订单中实际的物品,每个物品有相应的数量( quantity)。可如下检索所订购物品的总数(所有quantity值之和):

mysql> select sum(quantity) as item_ordered
-> from orderitems
-> where order_num=20005;

SUM()也可以用来合计计算值。在下面的例子中,合计每项物品的item_price*quantity,得出总的订单金额:

mysql> select sum(item_price * quantity) as total_price
-> from orderitems
-> where order_num=20005;

2、组合聚集函数

目前为止的所有聚集函数例子都只涉及单个函数。但实际上SELECT语句可根据需要包含多个聚集函数。请看下面的例子:

mysql> select count(*) as num_items,
-> min(prod_price) as price_min,
-> max(prod_price) as price_max,
-> avg(prod_price) as price_avg
-> from products;

这里用单条SELECT语句执行了4个聚集计算,返回4个值( products表中物品的数目,产品价格的最高、最低以及平均值)。

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

No comments yet.
To verify that you are human, please fill in "七"(required)