MySQL 聚合函数
MySQL的聚合函数用于
对多个值进行计算,并以单个值(如所有值的平均值)的形式返回结果所有值的总和,以及某些值组之间的最大值和最小值。我们大多将汇总函数与数据查询语言中的 SELECT语句一起使用。
语法:
以下是在MySQL中使用聚合函数的语法:
function_name (DISTINCT | ALL expression)
在上面的语法中,我们使用了以下参数:
第一,我们需要指定聚合函数的名称。
第二,当我们要基于不同的值计算结果时,使用 DISTINCT 修饰符,或者在计算所有值(包括重复项)时使用 ALL 修饰符。默认值为ALL。
第三,我们需要指定涉及列和算术运算符的表达式。
MySQL 中提供了各种聚合函数。下表总结了一些最常用的聚合函数:
聚合函数 |
说明 |
count() |
它返回行数,包括一组中具有NULL值的行。 |
sum() |
它返回集合中的总和(非NULL)。 |
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)
);
执行以下语句,以
将记录插入到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的指定已成功串联:
要了解更多信息,请单击此处。