SQL Count()函数

本教程将向您展示如何使用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子句示例

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

要在结果集中获取部门名称,需要将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;

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

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;

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

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;

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

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函数以获取组中行数的各种方法。


猿狮妹
2022-09-25
SQLCount 函数 编程课程
热门教程
1 SQL Max()函数 在本教程中,您将学习如何使用SQL Max函数查找组中的最大值。1. SQL MAX函数简介SQL提供MAX()函数,用于在一组值中查找最大值。 以下是MAX函数的语法。MAX(expression)MAX函数忽略NULL值。与SUM,COUNT和AVG函数不同,DISTINCT选项不适用于MAX函数。2. SQL MAX函数示例...
2 SQL复制表 如果要将SQL表复制到同一数据库中的另一个表中,可以使用select语句。从一个表复制到另一个表的语法如下:SELECT * INTO FROM 例如,可以使用以下语句将hr_employee表的记录复制到employee表中。SELECT * INTO employee FROM hr_employee;注意:SELECT INTO与INSERT INTO语句完全不同...
3 SQL教程 SQL是一种数据库计算机语言,用于检索和管理关系数据库中的数据。 SQL代表结构化查询语言(英文:*Structured Query Language*),SQL(结构化查询语言)用于对存储在数据库中的记录执行操作,例如:更新记录,删除记录,创建和修改表,视图等。
4 SQL Count()函数 本教程将向您展示如何使用SQL COUNT函数来获取组中的项目数。1. SQL COUNT函数简介SQL COUNT函数是一个聚合函数,它返回符合条件行数。 可以使用SELECT语句中的COUNT函数来获取员工数量,每个部门的员工数量,指定工作岗位的员工数量等。以下是SQL COUNT函数的语法:COUNTC ([ALL | DISTINCT] expression);COUNT函数的结果取决于传递给它的参数。默认情况下,COUNT函数使用ALL关键字,无论是否...
5 SQL All运算符 在本教程中,您将了解SQL ALL运算符以及如何使用它来将值与一组值进行比较。1. SQL ALL运算符简介SQL ALL运算符是一个逻辑运算符,它将单个值与子查询返回的单列值集进行比较。以下是SQL ALL运算符的语法:WHERE column_name comparison_operator ALL (subquery)SQL ALL运算符必须以比较运算符开头,例如:>,>=,<,<=,<>,=,后跟子查询。 某些数据库系统(...
6 SQL自连接 本教程将向您展示如何使用SQL自连接技术将表连接到自身。1. SQL自连接简介有时,将表连接到自身是很有用的。 这种类型的连接称为自连接。我们将一张表连接到自身来评估同一个表中其他行的行。 要执行自联接,我们使用内连接或左连接子句。因为同一个表在单个查询中出现两次,所以必须使用表别名。 以下语句说明了如何将表连接到自身。...
7 SQL聚合函数 在本教程中,您将了解SQL聚合函数,包括:AVG(),COUNT(),MIN(),MAX()和SUM()。SQL聚合函数计算一组值并返回单个值。 例如,平均函数(AVG)采用值列表并返回平均值。因为聚合函数对一组值进行操作,所以它通常与SELECT语句的GROUP BY子句一起使用。 GROUP BY子句将结果集划分为值分组,聚合函数为每个分组返回单个值。SELECT c1, aggregate_function(c2)FROM tableGROUP BY c1;...
8 SQL检查约束 在本教程中,将学习如何使用SQL CHECK约束来验证基于布尔表达式的列或一组列中的数据。1. SQL CHECK约束简介CHECK约束是SQL中的完整性约束,它允许您指定列或列集中的值必须满足布尔表达式。您可以在单个列或整个表上定义CHECK约束。 如果在单个列上定义CHECK约束,则CHECK约束仅检查此列的值。 但是,如果在表上定义CHECK约束,则会根据同一行的其他列中的值限制列中的值。...
9 SQL Intersect运算符 本教程解释了SQL INTERSECT运算符,并向演示如何应用它来获取两个或多个查询的交集。1. SQL INTERSECT运算符简介INTERSECT运算符是一个集合运算符,它从SELECT语句返回两个或多个结果集的不同行。假设有两个表记录:A(1,2)和B(2,3)。下图说明了A和B表的交集。...
10 SQL Order By排序 本教程将演示如何使用SQL ORDER BY子句根据指定的标准按升序或降序对结果集进行排序。1. SQL ORDER BY子句简介当使用SELECT语句查询表中的数据时,结果集中显示的行的顺序可能与您的预期不符。在某些情况下,结果集中显示的行按其物理存储在表中的顺序排列。 但是,如果查询优化器使用索引来处理查询,则行记录将显示为它们以索引键顺序存储。 因此,结果集中的行顺序未确定或不可预测。查询优化器是数据库系统中的内置软件组件,用于确定SQL语句查询请求数据的最有效方...
  • Copyright © 2021 猿狮院, All rights reserved.