SQL COUNT 函式

摘要:在本教程中,您將學習如何使用 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 表進行演示

employees_table

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
----------------
              5

SQL 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           |              6

SQL 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 值的行。

資料庫 #

本教程是否有幫助?
© .