MySQL Count()函数
MySQL count()函数用于返回表达式的计数。它允许我们计数符合指定条件的表中的所有行或仅计数一些行。它是一种聚合函数,其返回类型为BIGINT。如果没有找到任何匹配的行,该函数将返回0。
我们可以使用三种形式的count函数,下面将对其进行解释:
- Count (*)
- Count (expression)
- Count (distinct)
让我们详细讨论每个形式。
COUNT(*)函数: 该函数使用SELECT语句返回结果集中行数的计数。结果集包含所有非空、空和重复行。
COUNT(expression)函数: 该函数返回不包含空行的结果集,该结果是表达式的结果。
COUNT(distinct expression)函数: 该函数返回不包含NULL值的唯一行的计数,作为表达式的结果。
语法
COUNT()函数的语法如下:
SELECT COUNT (aggregate_expression)
FROM table_name
[WHERE conditions];
参数解释
aggregate_expression: 指定将计算其NON-NULL值的列或表达式。
table_name: 指定要检索记录的表。在 FROM子句 中至少必须列出一个表。
WHERE条件: 可选。指定必须满足的条件以选择记录。
MySQL count()函数示例
考虑一个名为”employees”的表,其中包含以下数据。
让我们了解一下count()函数在MySQL中是如何工作的。
示例1
执行以下查询,使用COUNT(expression)函数计算表中可用的员工名字的总数:
mysql> SELECT COUNT(emp_name) FROM employees;
输出:
示例2
执行以下语句,返回employee表中的所有行,并且 WHERE子句 指定了列emp_age中值大于32的行:
mysql> SELECT COUNT(*) FROM employees WHERE emp_age>32;
输出:
示例3
该语句使用COUNT(distinct 表达式)函数来计算列emp_age中非空且不重复的行数:
mysql> SELECT COUNT(DISTINCT emp_age) FROM employees;
输出:
MySQL Count()函数与GROUP BY子句
我们还可以在GROUP BY子句中使用count()函数,该函数返回每个分组中元素的计数。例如,以下语句返回每个城市中的雇员数量:
mysql> SELECT emp_name, city, COUNT(*) FROM employees GROUP BY city;
执行成功后,我们将得到以下结果:
MySQL Count()函数与HAVING和ORDER BY子句
让我们看看另一个使用ORDER BY和HAVING子句的count()函数的例子。执行以下语句,该语句将给出至少有两个相同年龄的员工姓名,并根据计数结果进行排序:
mysql> SELECT emp_name, emp_age, COUNT(*) FROM employees
GROUP BY emp_age
HAVING COUNT(*)>=2
ORDER BY COUNT(*);
这个陈述将会输出如下结果: