SQL聚合函數

在本教學中,您將瞭解SQL聚合函數,包括:AVG()COUNT()MIN()MAX()SUM()

SQL聚合函數計算一組值並返回單個值。 例如,平均函數(AVG)採用值列表並返回平均值。

因為聚合函數對一組值進行操作,所以它通常與SELECT語句的GROUP BY子句一起使用。 GROUP BY子句將結果集劃分為值分組,聚合函數為每個分組返回單個值。

SELECT c1, aggregate_function(c2)
FROM table
GROUP BY c1;

以下是常用的SQL聚合函數:

  • AVG() - 返回集合的平均值。
  • COUNT() - 返回集合中的專案數。
  • MAX() - 返回集合中的最大值。
  • MIN() - 返回集合中的最小值
  • SUM() - 返回集合中所有或不同值的總和。

COUNT()函數外,SQL聚合函數忽略null值。只能將聚合函數用作運算式,如下所示:

  • SELECT語句的選擇列表,子查詢或外部查詢。
  • 一個HAVING子句

1. AVG()函數

AVG()函數返回集合中的平均值,以下是AVG()函數的語法:

AVG( ALL | DISTINCT)

ALL關鍵字指示AVG()函數計算所有值的平均值,而DISTINCT關鍵字強制函數僅對不同的值進行操作。 默認情況下,使用ALL選項。

以下示例演示如何使用AVG()函數計算每個部門的平均工資:

SELECT
    department_name, ROUND(AVG(salary), 0) avg_salary
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;

執行上面示例代碼,得到以下結果 -

2. MIN()函數

MIN()函數返回集合的最小值。 以下是MIN()函數的語法:

MIN(column | expression)

例如,以下語句返回每個部門中員工的最低工資:

SELECT
    department_name, MIN(salary) min_salary
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;

執行上面示例代碼,得到以下結果 -

3. MAX()函數

MAX()函數返回集合的最大值,MAX()函數具有以下語法:

MAX(column | expression)

例如,以下語句返回每個部門中員工的最高薪水:

SELECT
    department_name, MAX(salary) highest_salary
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;

執行上面示例代碼,得到以下結果 -

4. COUNT()函數

COUNT()函數返回集合中的專案數。 以下顯示了COUNT()函數的語法:

COUNT ( [ALL | DISTINCT] column | expression | *)

例如,以下示例使用COUNT(*)函數返回每個部門的人數:

SELECT
    department_name, COUNT(*) headcount
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;

執行上面示例代碼,得到以下結果:

5. SUM()函數

SUM()函數返回所有值的總和。 以下說明了SUM()函數的語法:

SUM(ALL | DISTINCT column)

例如,以下語句返回每個部門中所有員工的總薪水:

SELECT
    department_id, SUM(salary)
FROM
    employees
GROUP BY department_id;

執行上面示例代碼,得到以下結果:

在本教學中,您學習了最常用的SQL聚合函數,包括:AVG()COUNT()MIN()MAX()SUM()函數。


上一篇: SQL自連接 下一篇: SQL Avg()函數