本教學將向您展示如何使用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
值的行。
下面舉一些例子來看看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
函式以獲取組中行數的各種方法。