摘要:在本教程中,您將學習如何使用 SQL COUNT 函式來獲取表中的行數。
SQL COUNT 函式簡介 #
SQL COUNT 函式是一個聚合函式,它返回查詢所返回的行數。
例如,您可以在 SELECT 語句中使用 COUNT 函式來獲取員工總數、每個部門的員工人數、擔任特定職位的員工人數等。
下面說明了 SQL COUNT 函式的語法
COUNT([ALL | DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)COUNT 函式的結果取決於您傳遞給它的引數。
ALL關鍵字會將重複值包含在結果中。例如,如果您有一個組 (1, 2, 3, 3, 4, 4) 並應用COUNT函式,結果是 6。預設情況下,無論您是否指定,COUNT函式都會使用ALL關鍵字。DISTINCT關鍵字只計算唯一值。例如,如果將COUNT函式應用於組 (1, 2, 3, 3, 4, 4),它將返回 4。- 表示式是您要計算其值的表的列。
COUNT 函式的另一種形式接受星號 (*) 作為引數,如下所示
COUNT(*)Code language: SQL (Structured Query Language) (sql)COUNT(*) 函式返回查詢中表的行數。它會計算重複行和包含 null 值的行。
SQL COUNT 函式示例 #
讓我們透過一些示例來看看 COUNT 函式是如何工作的。我們將使用示例資料庫中的 employees 表進行演示

SQL COUNT(*) 示例 #
以下示例使用 COUNT(*) 函式從 employees 表中獲取行數
SELECT
COUNT(*)
FROM
employees;Code language: SQL (Structured Query Language) (sql)輸出
count
-------
40以下示例使用 COUNT(*) 函式來計算在部門 ID 為 6 的部門工作的員工人數
SELECT
COUNT(*)
FROM
employees
WHERE
department_id = 6;Code language: SQL (Structured Query Language) (sql)在此示例中:
- 首先,
WHERE子句篩選出部門 ID 為 6 的部門。 - 其次,
COUNT(*)函式返回employees表中部門 ID 為 6 的行數。
以下示例使用 COUNT(*) 函式來獲取職位 ID 為 9 的員工人數
SELECT
COUNT(*)
FROM
employees
WHERE
job_id = 9;Code language: SQL (Structured Query Language) (sql)輸出
count
-------
5它的工作原理如下:
- 首先,
WHERE子句包含employees表中職位 ID 為 9 的行。 - 其次,
COUNT(*)返回employees表中職位 ID 為 9 的行數
以下示例使用 AS 關鍵字為 COUNT(*) 指定一個列別名
SELECT
COUNT(*) AS employee_count
FROM
employees
WHERE
job_id = 9;Code language: PHP (php)輸出
employee_count
----------------
5SQL COUNT 與 GROUP BY 子句示例 #
以下示例使用 COUNT 函式和 GROUP BY 子句來查詢每個部門的員工人數
SELECT
department_id,
COUNT(*) employee_count
FROM
employees
GROUP BY
department_id
ORDER BY
employee_count;Code language: SQL (Structured Query Language) (sql)輸出
department_id | employee_count
---------------+----------------
7 | 1
4 | 1
1 | 1
11 | 2
2 | 2
9 | 3
6 | 5
8 | 6
3 | 6
10 | 6
5 | 7工作原理
- 首先,
GROUP BY子句按部門 ID 對employees表中的行進行分組。 - 其次,
COUNT(*)函式返回每個分組的行數
以下示例使用 COUNT(*) 函式按部門獲取員工人數。此外,它還使用 INNER JOIN 子句將部門名稱包含在結果集中
SELECT
department_name,
COUNT(*) employee_count
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
ORDER BY
employee_count;Code language: SQL (Structured Query Language) (sql)輸出
department_name | employee_count
------------------+----------------
Administration | 1
Human Resources | 1
Public Relations | 1
Accounting | 2
Marketing | 2
Executive | 3
IT | 5
Finance | 6
Purchasing | 6
Sales | 6
Shipping | 7Code language: PHP (php)SQL COUNT 與 HAVING 子句示例 #
以下示例按部門返回員工人數。此外,它還使用 HAVING 子句來僅選擇員工超過五人的部門
SELECT
department_name,
COUNT(*) employee_count
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
HAVING
COUNT(*) > 5
ORDER BY
employee_count DESC;Code language: SQL (Structured Query Language) (sql) department_name | employee_count
-----------------+----------------
Shipping | 7
Purchasing | 6
Finance | 6
Sales | 6SQL COUNT(DISTINCT 表示式) 示例 #
以下示例使用 COUNT 來獲取 employees 表中 job_id 列的值的數量
SELECT
COUNT(job_id)
FROM
employees;Code language: SQL (Structured Query Language) (sql) count
-------
40查詢返回 40,其中包括重複值。要刪除重複項,您可以在 COUNT 函式中使用 DISTINCT 關鍵字,如下所示
SELECT
COUNT(DISTINCT job_id)
FROM
employees; count
-------
19以下示例使用帶 DISTINCT 關鍵字的 COUNT 函式來獲取經理的人數
SELECT
COUNT(DISTINCT manager_id)
FROM
employees;Code language: SQL (Structured Query Language) (sql)輸出
count
-------
10摘要 #
COUNT函式返回一個組中的行數。ALL關鍵字包含重複值,而DISTINCT關鍵字則在結果中移除重複值。COUNT(*)返回查詢中的行數,包括重複行和包含 null 值的行。
資料庫 #
- PostgreSQL COUNT 函式
- Oracle COUNT 函式
- SQL Server COUNT 函式
- MySQL COUNT 函式
- SQLite COUNT 函式
- Db2 COUNT 函式
- MariaDB COUNT 函式