MySQL 聚合函数

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

一、聚合函数 语法

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

function_name (DISTINCT | ALL expression)  

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

  • 首先,我们需要指定聚合函数的名称。
  • 其次,当我们想根据不同的值计算结果时,我们使用DISTINCT修饰符,或者在计算所有值(包括重复值)时使用ALL修饰符。默认值为全部。
  • 第三,我们需要指定涉及列和算术运算符的表达式。

 二、MySQL 中常见的聚合函数

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

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

三、为什么需要使用聚合函数?

我们主要在数据库、电子表格和许多其他数据处理软件包中使用聚合函数。在商业环境中,不同的组织级别需要不同的信息,例如高层管理人员有兴趣了解整体数据而不是个人细节。这些函数从我们的数据库中生成汇总数据。因此,它们被广泛用于经济和金融领域,以代表经济健康或股票和行业表现。

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

  • 大多数租借的电影。
  • 租借最少的电影。
  • 一个月内每部电影的平均出租次数。

我们可以借助聚合函数轻松生成这些细节。

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

执行以下语句以创建员工表:

CREATE TABLE employee(  
    name varchar(45) NOT NULL,    
    occupation varchar(35) NOT NULL,    
    working_date date,  
    working_hours varchar(10)  
);  

执行以下语句将记录插入到员工表中:

INSERT INTO employee VALUES    
('Robin', 'Scientist', '2020-10-04', 12),  
('Warner', 'Engineer', '2020-10-04', 10),  
('Peter', 'Actor', '2020-10-04', 13),  
('Marco', 'Doctor', '2020-10-04', 14),  
('Brayden', 'Teacher', '2020-10-04', 12),  
('Antonio', 'Business', '2020-10-04', 11);  

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

四、MySQL count()函数

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

示例

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

mysql> SELECT COUNT(name) FROM employee;     

输出结果为:

执行后,我们可以看到这张表有六个员工。

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

五、MySQL sum()函数

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

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

mysql> SELECT SUM(working_hours) AS "Total working hours" FROM employee;    

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

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

六、MySQL avg()函数

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

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

mysql> SELECT AVG(working_hours) AS "Average working hours" FROM employee;    

执行后,我们可以看到组织内所有员工的平均工作时间:

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

七、MySQL min()函数

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

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

mysql> SELECT MIN(working_hours) AS Minimum_working_hours FROM employee;   

执行后,我们可以看到表中可用的员工的最低工作时间:

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

八、MySQL max()函数

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

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

mysql> SELECT MAX(working_hours) AS Maximum_working_hours FROM employee;    

执行后,我们可以看到表中可用的员工最长工作时间:

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

九、MySQL first()函数

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

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

mysql> SELECT working_date FROM employee LIMIT 1;    

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

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

十、MySQL last()函数

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

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

mysql> SELECT working_hours FROM employee ORDER BY name DESC LIMIT 1;    

执行后,我们可以看到表中可用的员工的最后工作时间:

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

十一、MySQL GROUP_CONCAT()函数

GROUP_CONCAT() 函数将连接的字符串从多行返回到单个字符串中。如果组包含至少一个非空值,它总是返回一个字符串值。否则,我们将得到一个空值。

假设我们有另一个员工表,如下所示:

如果我们想在employee表上连接相同dept_id的指定,我们需要使用以下查询:

mysql> SELECT emp_id, emp_fname, emp_lname, dept_id,     
GROUP_CONCAT(designation) as "designation" FROM employee group by emp_id;    

执行后,我们可以看到相同dept_id的指定拼接成功:

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

热门文章

优秀文章