MySQL 聚合函数

17 Mar 2025 | 5 分钟阅读

MySQL 的聚合函数用于对多个值执行计算,并返回单个值,例如所有值的平均值、所有值的总和以及特定值分组中的最大值和最小值。我们在数据查询语言的 SELECT 语句 中主要使用聚合函数。

语法

在 MySQL 中使用聚合函数的语法如下:

在上例语法中,我们使用了以下参数:

  • 首先,我们需要指定聚合函数的名称。
  • 其次,当我们想基于不重复的值计算结果时,使用 DISTINCT 修饰符;当我们计算包括重复项在内的所有值时,则使用 ALL 修饰符。默认值为 ALL。
  • 第三,我们需要指定涉及列和算术运算符的表达式。

MySQL 中有各种可用的聚合函数。下表总结了一些最常用的聚合函数:

聚合函数描述
count()它返回组中行的数量,包括包含 NULL 值的行。
sum()它返回集合中所有(非 NULL)值的总和。
average()它返回表达式的平均值。
min()它返回集合中的最小值(最低值)。
max()它返回集合中的最大值(最高值)。
groutp_concat()它返回一个连接的字符串。
first()它返回表达式的第一个值。
last()它返回表达式的最后一个值。

为什么使用聚合函数?

我们主要在数据库、电子表格和许多其他数据处理软件包中使用聚合函数。在商业环境中,不同层级的组织需要不同的信息,例如,高层管理者更关心整体数字而不是个体细节。这些函数从我们的数据库中生成汇总数据。因此,它们广泛应用于经济学和金融领域,以表示经济状况或股票和行业表现。

让我们以 myflix(一个拥有大量电影收藏的视频流网站)数据库为例,管理层可能需要以下详细信息:

  • 最常租借的电影。
  • 最少租借的电影。
  • 平均每月租借的电影数量。

我们可以通过聚合函数轻松生成这些详细信息。

让我们详细讨论最常用的聚合函数。首先,我们将创建一个新表来演示所有聚合函数。

执行以下语句来创建一个名为 employee 的表。

执行以下语句将记录插入 employee 表。

现在,执行 SELECT 语句 来显示记录。

MySQL Aggregate Functions

Count() 函数

MySQL count() 函数返回表达式中的总值数。此函数根据指定的条件生成表中的所有行或仅部分行,其返回类型为 BIGINT。如果找不到匹配的行,则返回零。它可以处理数字和非数字数据类型。

示例

假设我们要获取 employee 表中员工的总数,我们需要使用 count() 函数,如下面的查询所示:

输出

执行后,我们可以看到该表有六名员工。

MySQL Aggregate Functions

要阅读更多信息,请点击此处

Sum() 函数

MySQL sum() 函数返回表达式的总和(非 NULL)值。如果结果集没有任何行,则返回 NULL。它仅适用于数字数据类型。

假设我们要计算表中所有员工的总工作小时数,我们需要使用 sum() 函数,如下面的查询所示:

输出

执行后,我们可以看到表中所有员工的总工作小时数。

MySQL Aggregate Functions

要阅读更多信息,请点击此处

AVG() 函数

MySQL AVG() 函数计算列中指定值的平均值。与 SUM() 函数类似,它也仅适用于数字数据类型。

假设我们要获取表中所有员工的平均工作小时数,我们需要使用 AVG() 函数,如下面的查询所示:

输出

执行后,我们可以看到该组织中所有员工的平均工作小时数。

MySQL Aggregate Functions

要阅读更多信息,请点击此处

MIN() 函数

MySQL MIN() 函数返回指定列的最小值(最低值)。它也仅适用于数字数据类型。

假设我们要获取表中员工的最小工作小时数,我们需要使用 MIN() 函数,如下面的查询所示:

输出

执行后,我们可以看到表中员工的最小工作小时数。

MySQL Aggregate Functions

要阅读更多信息,请点击此处

MAX() 函数

MySQL MAX() 函数返回指定列的最大值(最高值)。它也仅适用于数字数据类型。

假设我们要获取表中员工的最大工作小时数,我们需要使用 MAX() 函数,如下面的查询所示:

输出

执行后,我们可以看到表中员工的最大工作小时数。

MySQL Aggregate Functions

要阅读更多信息,请点击此处

FIRST() 函数

此函数返回指定列的第一个值。要获取列的第一个值,我们必须使用 LIMIT 子句。这是因为 FIRST() 函数仅在 MS Access 中支持。

假设我们要获取表中员工的第一个工作日期,我们需要使用以下查询:

输出

执行后,我们可以看到表中员工的第一个工作日期。

MySQL Aggregate Functions

要阅读更多信息,请点击此处

LAST() 函数

此函数返回指定列的最后一个值。要获取列的最后一个值,我们必须使用 ORDER BYLIMIT 子句。这是因为 LAST() 函数仅在 MS Access 中支持。

假设我们要获取表中员工的最后一个工作小时数,我们需要使用以下查询:

输出

执行后,我们可以看到表中员工的最后一个工作小时数。

MySQL Aggregate Functions

要阅读更多信息,请点击此处

GROUP_CONCAT() 函数

GROUP_CONCAT() 函数将多个行的连接字符串合并到一个字符串中。如果组包含至少一个非空值,它始终返回字符串值。否则,我们将获得一个 null 值。

假设我们有另一个如下所示的 employee 表:

MySQL Aggregate Functions

如果我们想连接 employee 表中相同 dept_id 的职位,我们需要使用以下查询:

输出

执行后,我们可以看到相同 dept_id 的职位已成功连接。

MySQL Aggregate Functions

要阅读更多信息,请点击此处


下一主题MySQL count()