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(一个拥有大量电影收藏的视频流媒体网站)数据库为例,管理层可能需要以下详细信息:
- 最受欢迎的电影。
- 最不受欢迎的电影。
- 平均每个电影每月租出的数量。
我们可以很容易地通过聚合函数来生成这些详细信息。
让我们详细讨论一下最常用的聚合函数。首先,我们将创建一个新表格来演示所有聚合函数。
执行下面的语句来创建一个 employee 表:
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 计数() 函数 返回表达式中数值的总数 。这个函数根据指定的条件产生表的所有行或者只有一些行,并且它的返回类型是 BIGINT 。如果它找不到匹配的行,则返回零。它可以处理数值和非数值数据类型。
示例
假设我们想要获取员工表中员工的总数,我们需要使用 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() 函数将多行中的字符串连接成一个单一的字符串。如果组中至少有一个非空值,它总是返回一个字符串值。否则,我们将得到一个空值。
假设我们有另一个员工表如下:
如果我们想要连接雇员表上相同 dept_id 的职位,我们需要使用以下查询:
mysql> SELECT emp_id, emp_fname, emp_lname, dept_id,
GROUP_CONCAT(designation) as "designation" FROM employee group by emp_id;
转换结果:
执行后,我们可以看到相同的部门编号成功地连接在一起:
要阅读更多信息, 点击这里 。