SQL Count()函數
本教程將向您展示如何使用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
函數以獲取組中行數的各種方法。