SQL COUNT 函数

摘要:在本教程中,您将学习如何使用 SQL COUNT 函数来获取表中的行数。

SQL COUNT 函数简介 #

SQL COUNT 函数是一个聚合函数,它返回查询所返回的行数。

例如,您可以在 SELECT 语句中使用 COUNT 函数来获取员工总数、每个部门的员工人数、担任特定职位的员工人数等。

下面说明了 SQL COUNT 函数的语法

COUNT([ALL | DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)

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

  • ALL 关键字会将重复值包含在结果中。例如,如果您有一个组 (1, 2, 3, 3, 4, 4) 并应用 COUNT 函数,结果是 6。默认情况下,无论您是否指定,COUNT 函数都会使用 ALL 关键字。
  • DISTINCT 关键字只计算唯一值。例如,如果将 COUNT 函数应用于组 (1, 2, 3, 3, 4, 4),它将返回 4。
  • 表达式是您要计算其值的表的列。

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

COUNT(*)Code language: SQL (Structured Query Language) (sql)

COUNT(*) 函数返回查询中表的行数。它会计算重复行和包含 null 值的行。

SQL COUNT 函数示例 #

让我们通过一些示例来看看 COUNT 函数是如何工作的。我们将使用示例数据库中的 employees 表进行演示

employees_table

SQL COUNT(*) 示例 #

以下示例使用 COUNT(*) 函数从 employees 表中获取行数

SELECT
  COUNT(*)
FROM
  employees;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 count
-------
    40

以下示例使用 COUNT(*) 函数来计算在部门 ID 为 6 的部门工作的员工人数

SELECT
  COUNT(*)
FROM
  employees
WHERE
  department_id = 6;Code language: SQL (Structured Query Language) (sql)

试一试

在此示例中:

  • 首先,WHERE 子句筛选出部门 ID 为 6 的部门。
  • 其次,COUNT(*) 函数返回 employees 表中部门 ID 为 6 的行数。

以下示例使用 COUNT(*) 函数来获取职位 ID 为 9 的员工人数

SELECT
  COUNT(*)
FROM
  employees
WHERE
  job_id = 9;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 count
-------
     5

它的工作原理如下:

  • 首先,WHERE 子句包含 employees 表中职位 ID 为 9 的行。
  • 其次,COUNT(*) 返回 employees 表中职位 ID 为 9 的行数

以下示例使用 AS 关键字为 COUNT(*) 指定一个列别名

SELECT
  COUNT(*) AS employee_count
FROM
  employees
WHERE
  job_id = 9;Code language: PHP (php)

试一试

输出

 employee_count
----------------
              5

SQL COUNT 与 GROUP BY 子句示例 #

以下示例使用 COUNT 函数和 GROUP BY 子句来查找每个部门的员工人数

SELECT
  department_id,
  COUNT(*) employee_count
FROM
  employees
GROUP BY
  department_id
ORDER BY
  employee_count;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 department_id | employee_count
---------------+----------------
             7 |              1
             4 |              1
             1 |              1
            11 |              2
             2 |              2
             9 |              3
             6 |              5
             8 |              6
             3 |              6
            10 |              6
             5 |              7

工作原理

  • 首先,GROUP BY 子句按部门 ID 对 employees 表中的行进行分组。
  • 其次,COUNT(*) 函数返回每个分组的行数

以下示例使用 COUNT(*) 函数按部门获取员工人数。此外,它还使用 INNER JOIN 子句将部门名称包含在结果集中

SELECT
  department_name,
  COUNT(*) employee_count
FROM
  employees e
  INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
  department_name
ORDER BY
  employee_count;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 department_name  | employee_count
------------------+----------------
 Administration   |              1
 Human Resources  |              1
 Public Relations |              1
 Accounting       |              2
 Marketing        |              2
 Executive        |              3
 IT               |              5
 Finance          |              6
 Purchasing       |              6
 Sales            |              6
 Shipping         |              7Code language: PHP (php)

SQL COUNT 与 HAVING 子句示例 #

以下示例按部门返回员工人数。此外,它还使用 HAVING 子句来仅选择员工超过五人的部门

SELECT
  department_name,
  COUNT(*) employee_count
FROM
  employees e
  INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
  department_name
HAVING
  COUNT(*) > 5
ORDER BY
  employee_count DESC;Code language: SQL (Structured Query Language) (sql)

试一试

 department_name | employee_count
-----------------+----------------
 Shipping        |              7
 Purchasing      |              6
 Finance         |              6
 Sales           |              6

SQL COUNT(DISTINCT 表达式) 示例 #

以下示例使用 COUNT 来获取 employees 表中 job_id 列的值的数量

SELECT
  COUNT(job_id)
FROM
  employees;Code language: SQL (Structured Query Language) (sql)

试一试

 count
-------
    40

查询返回 40,其中包括重复值。要删除重复项,您可以在 COUNT 函数中使用 DISTINCT 关键字,如下所示

SELECT
  COUNT(DISTINCT job_id)
FROM
  employees;

试一试

 count
-------
    19

以下示例使用带 DISTINCT 关键字的 COUNT 函数来获取经理的人数

SELECT
  COUNT(DISTINCT manager_id)
FROM
  employees;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 count
-------
    10

摘要 #

  • COUNT 函数返回一个组中的行数。
  • ALL 关键字包含重复值,而 DISTINCT 关键字则在结果中移除重复值。
  • COUNT(*) 返回查询中的行数,包括重复行和包含 null 值的行。

数据库 #

本教程是否有帮助?
© .