在本教程中,将学习如何使用SQL Server COUNT()
函数来获取集合中的项目数。
SQL Server COUNT()
是一个聚合函数,它返回在集合中找到的项目数。
以下是COUNT()
函数的语法:
COUNT([ALL | DISTINCT ] expression)
在这个语法中:
ALL
指示COUNT()
函数应用于所有值。ALL
是默认值。DISTINCT
指示COUNT()
函数返回唯一的非NULL
值的数量。expression
是除image
,text
或ntext
之外的任何类型的表达式。请注意,不能在表达式中使用子查询或聚合函数。
COUNT()
函数有另一种形式,如下所示:
COUNT(*)
在这种形式中,COUNT(*)
返回指定表中的行数。COUNT(*)
不支持DISTINCT
并且不带参数。它分别计算每一行,并包含包含NULL
值的行。
综上所述:
COUNT(*)
计算集合中的项目数,它包括NULL
和重复值COUNT(ALL expression)
计算集合中每行的表达式,并返回非NULL
值的数量。COUNT(DISTINCT expression)
计算集合中每行的表达式,并返回唯一的NULL
空值的数量。
SQL Server COUNT()函数:简单示例
以下语句创建一个名为t
的新表,将一些数据插入表中,并根据它查询数据:
CREATE TABLE t(
val INT
);
INSERT INTO t(val)
VALUES(1),(2),(2),(3),(null),(null),(4),(5);
SELECT
val
FROM
t;
执行上面查询语句,得到以下结果:
1. SQL Server COUNT(*)示例
COUNT(*)
返回指定表中的所有行,如以下语句所示:
SELECT
COUNT(*) val_count
FROM
t;
执行上面查询语句,得到以下结果:
val_count
-----------
8
(1 row affected)
2. SQL Server COUNT(DISTINCT expression)示例
以下示例使用COUNT(DISTINCT expression)
返回t
表中唯一的非null
值的数量:
SELECT
COUNT(DISTINCT val) val_count
FROM
t;
执行上面查询语句,得到以下结果:
val_count
-----------
5
Warning: Null value is eliminated by an aggregate or other SET operation.
(1 row affected)
3. Server COUNT(DISTINCT expression)示例
以下示例使用COUNT(DISTINCT expression)
返回t
表中的非NULL
值的数量:
SELECT
COUNT(val)
FROM
t;
执行上面查询语句,得到以下结果:
val_count
-----------
6
Warning: Null value is eliminated by an aggregate or other SET operation.
(1 row affected)
4. SQL Server COUNT()函数示例
以下语句返回products
表中的产品数量:
SELECT
COUNT(*) product_count
FROM
production.products;
执行上面查询语句,得到以下结果:
product_count
-------------
321
(1 row affected)
5. SQL Server COUNT()带有GROUP BY子句示例
以下语句使用COUNT(*)
函数查找每个产品类别中的产品数:
SELECT
category_name,
COUNT(*) product_count
FROM
production.products p
INNER JOIN production.categories c
ON c.category_id = p.category_id
GROUP BY
category_name
ORDER BY
product_count DESC;
执行上面查询语句,得到以下结果:
category_name product_count
-------------------- -------------
Cruisers Bicycles 78
Mountain Bikes 60
Road Bikes 60
Children Bicycles 59
Comfort Bicycles 30
Electric Bikes 24
Cyclocross Bicycles 10
(7 rows affected)
在此示例中,首先,GROUP BY
子句使用类别名称将产品分成组,然后将COUNT()
函数应用于每个分组。
6. SQL Server COUNT()带有HAVING子句示例
以下语句返回每个品牌和产品数量。 此外,它仅返回产品数量大于20
的品牌:
SELECT
brand_name,
COUNT(*) product_count
FROM
production.products p
INNER JOIN production.brands c
ON c.brand_id = p.brand_id
GROUP BY
brand_name
HAVING
COUNT(*) > 20
ORDER BY
product_count DESC;
执行上面查询语句,得到以下结果:
在本教程中,学习了如何使用SQL Server COUNT()
函数来查找集合中找到的项目数。