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()函式。