第12章 汇总数据
文章目录
学习什么是SQL的聚集函数以及如何利用它们汇总表的数据。
简单记录 - MySQL必知必会 - [英]Ben Forta
聚集函数 汇总数据
1、聚集函数
我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成。实际想要的是汇总信息
为方便这种类型的检索,MySQL给出了5个聚集函数,见下所示。这些函数能进行汇总信息。
SQL聚集函数
函数 说明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小
SUM() 返回某列之和
avg()、count()、max()、min()、sum()
聚集函数(aggregate function):
运行在行组上,计算和返回单个值的函数。
以下是各函数的使用说明。
1.1、AVG()函数 avg()
AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值。
AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。特定列值之和 / 计数行数 = 求得该列的平均值
AVG()
下面的例子使用AVG()返回products表中所有产品的平均价格:
mysql> SELECT AVG(prod_price) AS avg_price FROM products;
+-----------+
| avg_price |
+-----------+
| 16.133571 |
+-----------+
1 row in set (0.01 sec)
mysql>
AVG(prod_price) AS avg_price
avg_price是一个别名。
AVG()也可以用来确定特定列或行的平均值。(不只是某列所有行的平均值),加个条件来过滤。
下面的例子返回特定供应商所提供产品的平均价格:
mysql> SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;
+-----------+
| avg_price |
+-----------+
| 13.212857 |
+-----------+
1 row in set (0.00 sec)
mysql> SELECT vend_id,prod_price FROM products WHERE vend_id = 1003;
+---------+------------+
| vend_id | prod_price |
+---------+------------+
| 1003 | 13.00 |
| 1003 | 10.00 |
| 1003 | 2.50 |
| 1003 | 50.00 |
| 1003 | 4.49 |
| 1003 | 2.50 |
| 1003 | 10.00 |
+---------+------------+
7 rows in set (0.00 sec)
mysql>
多了个WHERE子句。此WHERE子句仅过滤出vend_id为1003的产品,因此avg_price中返回的值只是该供应商的产品的平均值。
AVG()只用于单个列,只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。avg(列名),avg(列名)...
注意:NULL值 AVG()函数忽略列值为NULL的行。不计算。
1.2、COUNT()函数 count()
COUNT()函数进行计数。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。COUNT()函数有两种使用方式。
- 使用COUNT(
*
)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。COUNT(*
) 统计所有的行的数目 - 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。COUNT()技术忽略NULL
下面的例子返回customers表中客户的总数:
mysql> SELECT COUNT(*) AS num_cust FROM customers;
+----------+
| num_cust |
+----------+
| 5 |
+----------+
1 row in set (0.00 sec)
mysql> SELECT * FROM customers;
+---------+----------------+---------------------+-----------+------------+----------+--------------+--------------+---------------------+
| cust_id | cust_name | cust_address | cust_city | cust_state | cust_zip | cust_country | cust_contact