SQL Server COUNT() 函数17 Mar 2025 | 5 分钟阅读 SQL Server 中的 COUNT() 函数是聚合函数的一部分,**用于计算表中存在的总行数**。当结果集中没有任何行时,它返回 **NULL**。 它通常与 SELECT 语句一起使用,其返回类型为 **INT**。 COUNT() 是一个内置函数,它接受一个参数,该参数可以是列或有效表达式,并返回一个结果来汇总输入数据集。 此函数不会忽略 NULL 值,因为它在计算查询结果时也会考虑它们。 它还可以与 WHERE、GROUP BY、ORDER BY 和 HAVING 子句一起使用以获得过滤后的结果。 语法以下给出了 SQL Server 中 COUNT() 函数的语法 此函数包含以下参数 **表达式:** 它是表示将计算其非空值的列名称的必需表达式。 **table_name(s):** 它指示我们要从中检索记录的表的名称。可以指定多个表。 **WHERE 条件:** 这是一个可选子句,用于定义应满足要选择的记录的条件。 SQL Server 允许我们使用以下三种形式的 count 函数
COUNT() 函数示例让我们借助各种示例来了解 COUNT() 函数在 SQL Server 中的工作方式。 我们将使用“**employee_info**”表来实际演示 COUNT 函数。 该表包含以下数据 ![]() COUNT 函数的基本示例此示例解释了 COUNT 函数的基本用法。 它显示表中存在的总行数,包括空值、非空值和重复值。 假设我们要计算给定表中列出的员工总数。 我们可以编写如下查询 执行查询将返回以下输出 ![]() 带有 DISTINCT 子句的 COUNT 函数DISTINCT 关键字**仅考虑表中的唯一数据**。 假设我们要计算 employee_info 表中列出的唯一员工总数。 我们可以编写如下查询来执行相同的操作 执行查询将返回以下输出,该输出仅显示表中的唯一员工数 ![]() 这是另一个示例,它使用 COUNT(expression) 函数来计算 employee_info 表中非空值的总数 由于未找到 NULL 记录,因此该语句将计算所有员工 ![]() 带有 WHERE 子句的 COUNT 函数WHERE 子句用于**过滤表中的记录**。 本示例将 WHERE 子句与 COUNT() 函数一起使用,以返回工资低于 50000 且工作时间大于 9 的员工总数。 当我们执行查询时,我们看到七名员工的工资低于 50000 且工作时间大于 9 ![]() 带有 GROUP BY 子句的 COUNT 函数GROUP BY 子句用于**将具有相同值的行分组**到摘要行中。 它在聚合函数中非常有用,可以生成摘要报告。 以下查询将使用 COUNT() 函数**计算每个职业的员工总数:** 执行查询将返回与每个职业关联的员工人数 ![]() 如果我们尝试在 SELECT 语句中组合**聚合列和非聚合列**,我们将收到错误。 这是错误消息 ![]() 带有 ORDER BY 子句的 COUNT 函数ORDER BY 子句允许我们**按升序或降序显示表**。 以下示例将使用带有 ORDER BY 子句的 COUNT() 函数,计算每个职业的员工总数,然后根据员工人数按升序对结果集进行排序 执行语句将按员工人数的升序显示结果 ![]() 带有 HAVING 子句的 COUNT 函数HAVING 子句用于**过滤分组行**。 我们必须将 GROUP BY 子句与 HAVING 子句一起使用。 本示例将 HAVING 子句与 COUNT() 函数一起使用。 它计算每个职业的员工人数,然后检查聚合计数是否大于 1。 如果为真,则相应的记录将按员工人数的升序返回 执行该语句将返回每个职业中大于 1 的员工人数 ![]() 带有 OVER() 的 COUNT 函数OVER() 子句确定查询中的哪些行应用于该函数,函数评估它们的顺序以及何时应重新启动函数的计算。 以下查询提供了 **employee_info** 表中每个职业的员工的累积总数,并按升序组织输出 执行查询将返回以下结果 ![]() COUNT() 与 COUNT_BIG() 函数有何不同?SQL Server 中的 COUNT 和 COUNT_BIG 函数本质上做的是同一件事,即计算表中存在的项目数。 但有时我们会根据应用程序在它们之间做出选择。 在这种情况下,我们可能会根据数据类型选择最适合应用程序的函数。 COUNT() 函数**将结果作为 INT 返回**,而 COUNT_BIG() 函数**将结果作为 BIGINT 数据类型返回**。 因此,如果我们有一个包含数百万条记录的表,并且我们需要获取这些记录的计数,则 COUNT() 函数会给出错误,但 COUNT_BIG() 函数会显示这样的结果。 它们之间的另一个主要区别是在视图上创建索引时。 COUNT() 不允许在视图上创建聚集索引。 但是,当我们使用 COUNT_BIG() 函数时,我们可以在视图上创建聚集索引。 结论本文将解释如何以及何时在 SQL Server 中使用 COUNT() 函数的完整概述。 我们在使用此函数时必须小心,因为它仅适用于数字数据类型。 在这里,我们讨论了基于 COUNT 函数的几个用例的各种示例,例如如何使用 WHERE、GROUP BY、HAVING 和 OVER 子句获取表中存在的项目总数。 下一主题SQL Server 比较运算符 |
我们请求您订阅我们的新闻通讯以获取最新更新。