SQL COUNT() 函数

SQL COUNT() 函数

COUNT() 函数返回匹配指定条件的行数。

COUNT() 语法

SELECT COUNT([DISTINCT] column_name | *)
FROM table_name
WHERE condition;

COUNT() 的行为取决于括号内使用的参数:

  • COUNT(*) - 计算表中的总行数(包括 NULL 值)。
  • COUNT(column_name) - 计算列中所有非 NULL 值的数量。
  • COUNT(DISTINCT column_name) - 仅计算列中唯一的、非 NULL 值的数量。

使用 COUNT(*)

以下 SQL 使用 COUNT(*) 计算 Products 表中的总行数(包括 NULL 值):

实例

SELECT COUNT(*)
FROM Products;

亲自试一试

演示数据库

以下是在实例中使用的 Products 表的片段:

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18.00
2 Chang 1 1 24 - 12 oz bottles 19.00
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10.00
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22.00
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

使用 COUNT(column_name)

COUNT(column_name) 计算指定列中所有非 NULL 值的数量。

以下 SQL 计算 ProductName 列中所有非 NULL 值的数量:

实例

SELECT COUNT(ProductName)
FROM Products;

亲自试一试

使用 COUNT(DISTINCT column_name)

您可以通过使用 DISTINCT 关键字来忽略重复项。

COUNT(DISTINCT column_name) 仅计算列中唯一的、非 NULL 值的数量。

如果指定了 DISTINCT,则指定列中具有相同值的行将被计为一行。

以下 SQL 计算 Price 列中唯一的、非 NULL 值的数量:

实例

Products 表中有多少种不同的价格:

SELECT COUNT(DISTINCT Price)
FROM Products;

亲自试一试

添加 WHERE 子句

您可以添加 WHERE 子句来指定条件:

实例

计算 Price 高于 20 的产品数量:

SELECT COUNT(ProductID)
FROM Products
WHERE Price > 20;

亲自试一试

使用别名

使用 COUNT() 时,返回的列将没有名称。使用 AS 关键字为列指定描述性的名称。

实例

将 "count" 列命名为 "Number of records":

SELECT COUNT(*) AS [Number of records]
FROM Products;

亲自试一试

将 COUNT() 与 GROUP BY 一起使用

这里我们使用 COUNT() 函数和 GROUP BY 子句,返回 Products 表中每个类别的记录数:

实例

SELECT COUNT(*) AS [Number of records], CategoryID
FROM Products
GROUP BY CategoryID;

亲自试一试

您将在本教程的后面部分学习更多关于 GROUP BY 子句的内容。