php SQL查询语句count,SQL Count()函数

本文详细介绍了SQLCOUNT函数的用法,包括基础语法、示例和不同场景的应用,如结合GROUP BY、ORDER BY和HAVING子句。通过实例展示了如何计算总行数、特定条件的行数、每个部门的员工数量以及去除重复值后的计数。此外,还提到了COUNT(*)和COUNT(DISTINCT expression)的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本教程将向您展示如何使用SQL COUNT函数来获取组中的项目数。

1. SQL COUNT函数简介

SQL COUNT函数是一个聚合函数,它返回符合条件行数。 可以使用SELECT语句中的COUNT函数来获取员工数量,每个部门的员工数量,指定工作岗位的员工数量等。

以下是SQL COUNT函数的语法:

COUNTC ([ALL | DISTINCT] expression);

COUNT函数的结果取决于传递给它的参数。

默认情况下,COUNT函数使用ALL关键字,无论是否指定它。 ALL关键字表示考虑组中的所有项目,包括重复值。 例如,如果有一个数据集合(1,2,3,3,4,4)并应用COUNT函数,则结果为6。

如果明确指定DISTINCT关键字,则仅考虑唯一的非NULL值。 如果将COUNT函数应用于数据集(1,2,3,3,4,4),则COUNT函数返回4。

另一种形式的COUNT函数接受星号(*)作为参数如下:

COUNT(*)

COUNT(*)函数返回表中的行数,包括包含NULL值的行。

2. SQL COUNT函数示例

下面举一些例子来看看COUNT函数是如何工作的。将使用示例数据库中的employees表进行演示。

2.1. SQL COUNT(*)示例

要获取employees表中的行数,请使用COUNT(*)函数,如下所示:

SELECT

COUNT(*)

FROM

employees;

执行上面查询语句,得到以下结果:

+----------+

| COUNT(*) |

+----------+

| 40 |

+----------+

1 row in set

要查找在部门ID为 6 中工作的员工数量,请将WHERE子句添加到查询中,如下所示:

SELECT

COUNT(*)

FROM

employees

WHERE

department_id = 6;

执行上面查询语句,得到以下结果:

+----------+

| COUNT(*) |

+----------+

| 5 |

+----------+

1 row in set

同样,要查询工作岗位ID为9的员工数量,请使用以下语句:

SELECT

COUNT(*)

FROM

employees

WHERE

job_id = 9;

执行上面查询语句,得到以下结果:

+----------+

| COUNT(*) |

+----------+

| 5 |

+----------+

1 row in set

2.2. SQL COUNT与GROUP BY子句示例

要查找每个部门的员工数,请使用COUNT和GROUP BY子句,如下所示:

e72295f92f3ddf0c261f6a4f4b4b0467.png

要在结果集中获取部门名称,需要将employees表与departments表内连接,如下所示:

SELECT

e.department_id,

department_name,

COUNT(*)

FROM

employees e

INNER JOIN departments d ON d.department_id = e.department_id

GROUP BY

e.department_id;

执行上面查询语句,得到以下结果:

33e8fe69668dc312ece37648690e7003.png

2.3. SQL COUNT(*)带有ORDER BY子句的示例

可以在COUNT(*)函数使用ORDER BY子句对每个组的行数进行排序。 例如,以下语句获取每个部门的员工数,并根据员工数按降序对结果集进行排序。

SELECT

e.department_id,

department_name,

COUNT(*)

FROM

employees e

INNER JOIN departments d ON d.department_id = e.department_id

GROUP BY

e.department_id

ORDER BY

COUNT(*) DESC;

执行上面查询语句,得到以下结果:

26652f180ec2edb766512f4c547f2d2f.png

2.4. SQL COUNT带有HAVING子句的示例

要按COUNT(*)函数的结果过滤分组,需要在COUNT(*)函数使用HAVING子句。

例如,以下语句获取部门及其员工数量。 此外,它仅选择员工人数大于5的部门。

SELECT

e.department_id,

department_name,

COUNT(*)

FROM

employees e

INNER JOIN departments d ON d.department_id = e.department_id

GROUP BY

e.department_id

HAVING

COUNT(*) > 5

ORDER BY

COUNT(*) DESC;

执行上面查询语句,得到以下结果:

67e814fa13c0b1365265346715d5e209.png

2.5. SQL COUNT(DISTINCT表达式)示例

要获取employees表中的工作岗位数,请将COUNT函数应用于job_id列,如下所示:

SELECT

COUNT(job_id)

FROM

employees;

执行上面示例代码,得到以下结果:

+---------------+

| COUNT(job_id) |

+---------------+

| 40 |

+---------------+

1 row in set

上面查询中返回结果为:40,其中包含重复的工作岗位ID。 我们希望找出工作岗位数量,则要删除重复项,那么要将DISTINCT关键字添加到COUNT函数,如下所示:

SELECT

COUNT(DISTINCT job_id)

FROM

employees;

+------------------------+

| COUNT(DISTINCT job_id) |

+------------------------+

| 19 |

+------------------------+

1 row in set

可以使用COUNT DISTINCT获取经理数量,如下查询:

SELECT

COUNT(DISTINCT manager_id)

FROM

employees;

+----------------------------+

| COUNT(DISTINCT manager_id) |

+----------------------------+

| 10 |

+----------------------------+

1 row in set

注意: 主席没有经理。

在本教程中,您学习了应用SQL COUNT函数以获取组中行数的各种方法。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值