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子句示例

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

《SQL Count()函数》

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

执行上面查询语句,得到以下结果:
《SQL Count()函数》

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;

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

《SQL Count()函数》

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;

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

《SQL Count()函数》

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

        原文作者:SQL教程
        原文地址: https://www.yiibai.com/sql/sql-count.html
        本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
    点赞