【MySQL】汇总数据 - avg()、count()、max()、min()、sum()函数的使用

第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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值