在本教學中,將學習如何使用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()
函數來查找集合中找到的專案數。