本教程將向您展示如何使用SQL COUNT函數來獲取組中的專案數。
1. SQL COUNT函數簡介
SQL COUNT函數是一個聚合函數,它返回符合條件行數。 可以使用SELECT語句中的COUNT函數來獲取員工數量,每個部門的員工數量,指定工作崗位的員工數量等。
以下是SQL COUNT函數的語法:
COUNTC ([ALL | DISTINCT] expression);
COUNT函數的結果取決於傳遞給它的參數。
默認情況下,
COUNT函數使用ALL關鍵字,無論是否指定它。ALL關鍵字表示考慮組中的所有專案,包括重複值。 例如,如果有一個數據集合(1,2,3,3,4,4)並應用COUNT函數,則結果為6。如果明確指定
DISTINCT關鍵字,則僅考慮唯一的非NULL值。 如果將COUNT函數應用於數據集(1,2,3,3,4,4),則COUNT函數返回4。
另一種形式的COUNT函數接受星號(*)作為參數如下:
COUNT(*)
COUNT(*)函數返回表中的行數,包括包含NULL值的行。
2. SQL COUNT函數示例
下麵舉一些例子來看看COUNT函數是如何工作的。將使用示例資料庫中的employees表進行演示。
2.1. SQL COUNT(*)示例
要獲取employees表中的行數,請使用COUNT(*)函數,如下所示:
SELECT
COUNT(*)
FROM
employees;
執行上面查詢語句,得到以下結果:
+----------+
| COUNT(*) |
+----------+
| 40 |
+----------+
1 row in set
要查找在部門ID為 6 中工作的員工數量,請將WHERE子句添加到查詢中,如下所示:
SELECT
COUNT(*)
FROM
employees
WHERE
department_id = 6;
執行上面查詢語句,得到以下結果:
+----------+
| COUNT(*) |
+----------+
| 5 |
+----------+
1 row in set
同樣,要查詢工作崗位ID為9的員工數量,請使用以下語句:
SELECT
COUNT(*)
FROM
employees
WHERE
job_id = 9;
執行上面查詢語句,得到以下結果:
+----------+
| COUNT(*) |
+----------+
| 5 |
+----------+
1 row in set
2.2. SQL COUNT與GROUP BY子句示例
要查找每個部門的員工數,請使用COUNT和GROUP BY子句,如下所示:

要在結果集中獲取部門名稱,需要將employees表與departments表內連接,如下所示:
SELECT
e.department_id,
department_name,
COUNT(*)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id;
執行上面查詢語句,得到以下結果:
2.3. SQL COUNT(*)帶有ORDER BY子句的示例
可以在COUNT(*)函數使用ORDER BY子句對每個組的行數進行排序。 例如,以下語句獲取每個部門的員工數,並根據員工數按降序對結果集進行排序。
SELECT
e.department_id,
department_name,
COUNT(*)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
ORDER BY
COUNT(*) DESC;
執行上面查詢語句,得到以下結果:

2.4. SQL COUNT帶有HAVING子句的示例
要按COUNT(*)函數的結果過濾分組,需要在COUNT(*)函數使用HAVING子句。
例如,以下語句獲取部門及其員工數量。 此外,它僅選擇員工人數大於5的部門。
SELECT
e.department_id,
department_name,
COUNT(*)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
HAVING
COUNT(*) > 5
ORDER BY
COUNT(*) DESC;
執行上面查詢語句,得到以下結果:

2.5. SQL COUNT(DISTINCT運算式)示例
要獲取employees表中的工作崗位數,請將COUNT函數應用於job_id列,如下所示:
SELECT
COUNT(job_id)
FROM
employees;
執行上面示例代碼,得到以下結果:
+---------------+
| COUNT(job_id) |
+---------------+
| 40 |
+---------------+
1 row in set
上面查詢中返回結果為:40,其中包含重複的工作崗位ID。 我們希望找出工作崗位數量,則要刪除重複項,那麼要將DISTINCT關鍵字添加到COUNT函數,如下所示:
SELECT
COUNT(DISTINCT job_id)
FROM
employees;
+------------------------+
| COUNT(DISTINCT job_id) |
+------------------------+
| 19 |
+------------------------+
1 row in set
可以使用COUNT DISTINCT獲取經理數量,如下查詢:
SELECT
COUNT(DISTINCT manager_id)
FROM
employees;
+----------------------------+
| COUNT(DISTINCT manager_id) |
+----------------------------+
| 10 |
+----------------------------+
1 row in set
注意: 主席沒有經理。
在本教學中,您學習了應用SQL COUNT函數以獲取組中行數的各種方法。
