首页 > 编程笔记 > MySQL笔记 阅读:8

MySQL COUNT()聚合函数的用法(附带实例)

MySQL 中的 COUNT() 函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。

COUNT() 函数的使用方法有两种:
【实例 1】查询表 customers 中的总行数,SQL 语句如下:
mysql> SELECT COUNT(*) AS cust_num FROM customers;
+----------+
| cust_num |
+----------+
|      4   |
+----------+
由查询结果可以看到,COUNT(*) 返回表 customers 中记录的总行数,而不管其值是什么,返回的总数的名称为 cust_num。

【实例 2】查询表 customers 中有电子邮箱的顾客的总数,SQL 语句如下:
mysql> SELECT COUNT(c_email) AS email_num  FROM customers;
+-----------+
| email_num |
+-----------+
|       3   |
+-----------+
由查询结果可以看到,只有 3 个顾客有 email,email 为 NULL 的记录没有被 COUNT() 函数计算。

【实例 1】和【实例 2】中不同的数值说明了两种方式在计算总数的时候对待 NULL 的不同方式,指定列的值为空的行被 COUNT() 函数忽略;如果不指定列,而在 COUNT() 函数中使用星号(*),则所有记录都不会被忽略。

前面介绍分组查询的时候,介绍了如何用 COUNT() 函数与 GROUP BY 关键字一起来计算不同分组中的记录总数。

下面再来看一个例子:
【实例 3】在表 orderitems 中,使用 COUNT() 函数统计不同订单号中订购的水果种类,SQL 语句如下:
mysql> SELECT o_num, COUNT(f_id) FROM orderitems GROUP BY o_num;
+-------+-------------+
| o_num | COUNT(f_id) |
+-------+-------------+
| 30001 |         4   |
| 30002 |         1   |
| 30003 |         1   |
| 30004 |         1   |
| 30005 |         4   |
+-------+-------------+
从查询结果中可以看到,GROUP BY 关键字先按照订单号进行分组,然后计算每个分组中的总记录数。

相关文章