MySQL COUNT()聚合函数的用法(附带实例)
MySQL 中的 COUNT() 函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。
COUNT() 函数的使用方法有两种:
【实例 1】查询表 customers 中的总行数,SQL 语句如下:
【实例 2】查询表 customers 中有电子邮箱的顾客的总数,SQL 语句如下:
【实例 1】和【实例 2】中不同的数值说明了两种方式在计算总数的时候对待 NULL 的不同方式,指定列的值为空的行被 COUNT() 函数忽略;如果不指定列,而在 COUNT() 函数中使用星号(*),则所有记录都不会被忽略。
前面介绍分组查询的时候,介绍了如何用 COUNT() 函数与 GROUP BY 关键字一起来计算不同分组中的记录总数。
下面再来看一个例子:
【实例 3】在表 orderitems 中,使用 COUNT() 函数统计不同订单号中订购的水果种类,SQL 语句如下:
COUNT() 函数的使用方法有两种:
- COUNT(*):计算表中的总行数,而不管某列是否有数值或者是否为 NULL;
- COUNT(字段名):计算指定列下的总行数,计算时将忽略 NULL 的行。
【实例 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 关键字先按照订单号进行分组,然后计算每个分组中的总记录数。