📜  MySQL聚合函数

📅  最后修改于: 2020-11-18 03:28:04             🧑  作者: Mango

MySQL聚合函数

MySQL的聚合函数用于对多个值执行计算,并将结果返回为单个值,如所有值的平均值,所有值的总和以及某些值组中的最大值和最小值。我们通常将聚合函数与数据查询语言中的SELECT语句一起使用。

句法:

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

function_name (DISTINCT | ALL expression)

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

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

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

Aggregate Function Descriptions
count() It returns the number of rows, including rows with NULL values in a group.
sum() It returns the total summed values (Non-NULL) in a set.
average() It returns the average value of an expression.
min() It returns the minimum (lowest) value in a set.
max() It returns the maximum (highest) value in a set.
groutp_concat() It returns a concatenated string.
first() It returns the first value of an expression.
last() It returns the last value of an expression.

为什么我们使用聚合函数?

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

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

  • 租借最多的电影。
  • 租借最少的电影。
  • 每个电影在一个月内出租的平均数量。

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

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

执行以下语句以创建一个employee表:

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

执行以下语句,将记录插入到employee表中:

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语句以显示记录:

Count()函数

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

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

mysql> SELECT COUNT(name) FROM employee;   

输出:

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

要了解更多信息,请单击此处。

Sum()函数

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

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

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

输出:

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

要了解更多信息,请单击此处。

AVG()函数

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

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

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

输出:

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

要了解更多信息,请单击此处。

MIN()函数

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

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

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

输出:

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

要了解更多信息,请单击此处。

MAX()函数

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

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

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

输出:

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

要了解更多信息,请单击此处。

FIRST()函数

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

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

mysql> SELECT working_date FROM employee LIMIT 1;  

输出:

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

要了解更多信息,请单击此处。

LAST()函数

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

假设我们要获得表中某个雇员的最后一个工作时间,我们需要使用以下查询:

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

输出:

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

要了解更多信息,请单击此处。

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的指定已成功串联:

要了解更多信息,请单击此处。