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的指定拼接成功:
要阅读更多信息,请单击此处
热门文章
优秀文章