SQL Server Count()函數

在本教學中,將學習如何使用SQL Server COUNT()函數來獲取集合中的專案數。

SQL Server COUNT()是一個聚合函數,它返回在集合中找到的專案數。

以下是COUNT()函數的語法:

COUNT([ALL | DISTINCT  ] expression)

在這個語法中:

  • ALL指示COUNT()函數應用於所有值。 ALL是默認值。
  • DISTINCT指示COUNT()函數返回唯一的非NULL值的數量。
  • expression是除image, textntext之外的任何類型的運算式。請注意,不能在運算式中使用子查詢或聚合函數。

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()函數來查找集合中找到的專案數。


上一篇: SQL Server聚合函數 下一篇: SQL Server日期函數