MySQL分组函数与查询:SUM, AVG, MAX, MIN 深入解析

需积分: 5 1 下载量 5 浏览量 更新于2024-06-22 收藏 1.05MB PPTX 举报
"MySQL分组函数与分组查询技术讲解" 在数据库管理中,MySQL提供了一系列强大的功能来处理数据,其中包括分组函数和分组查询。这些功能对于数据分析、报表生成以及业务洞察至关重要。本资源主要关注了两个核心概念:流程控制函数和分组函数。 1. 流程控制函数: 流程控制函数主要用于在SQL查询中实现条件判断和逻辑操作。在MySQL中,有两个常用的流程控制函数——`IF` 和 `CASE...WHEN`。 1.1 IF 函数 `IF()` 函数用于基于一个条件返回两个可能的结果。基本语法如下: ```sql IF(条件, 结果1, 结果2) ``` 例如,检查佣金是否为NULL,若为NULL则显示“是”,否则显示“否”: ```sql SELECT last_name, commission_pct, IF(commission_pct IS NULL, "是", "否") AS 奖金 FROM employees; ``` 1.2 CASE...WHEN 语句 `CASE...WHEN` 语句提供更复杂的条件判断能力,它可以有多个分支。有两种语法形式: - 形式一(带END): ```sql CASE 要判断的字段或表达式 WHEN 常量1 THEN 结果1或语句1 WHEN 常量2 THEN 结果2或语句2 ELSE 结果n或语句n END ``` - 形式二(不带END): ```sql CASE WHEN 条件 THEN 结果或语句 ELSE 结果或语句 END ``` 例如,根据部门ID调整员工工资显示: ```sql SELECT salary AS 原始工资, department_id AS 部门编号, CASE department_id WHEN 30 THEN salary * 1.1 WHEN 40 THEN salary * 1.2 ELSE salary END AS 新工资 FROM employees; ``` 2. 分组函数: 分组函数用于对数据进行聚合操作,返回单行结果,而不是多行数据。MySQL中的主要分组函数包括 `SUM`, `AVG`, `MAX`, `MIN`, 和 `COUNT`。 2.1 SUM() 函数 `SUM()` 函数用于计算指定列的总和,适用于数字类型的数据。例如,查询所有员工的薪资总和: ```sql SELECT SUM(salary) AS 薪资总和 FROM employees; ``` 2.2 AVG() 函数 `AVG()` 函数返回指定列的平均值,同样适用于数字类型。如计算平均薪资: ```sql SELECT AVG(salary) AS 平均薪资 FROM employees; ``` 2.3 MAX() 和 MIN() 函数 这两个函数分别用于找到指定列的最大值和最小值,支持数字、字符、日期等多种数据类型。例如,找出最高和最低薪资: ```sql SELECT MAX(salary) AS 最高薪资, MIN(salary) AS 最低薪资 FROM employees; ``` 2.4 COUNT() 函数 `COUNT()` 函数用于计算非空值的数量,可以用于任何类型的数据。如计算员工总数: ```sql SELECT COUNT(*) AS 员工总数 FROM employees; ``` 值得注意的是,分组函数会忽略NULL值。 通过熟练掌握这些函数和查询技巧,数据库管理员和数据分析师能够更有效地处理和分析MySQL中的数据,从而提升工作效率并为决策提供准确依据。在实际工作中,结合适当的分组和聚合操作,如使用 `GROUP BY` 子句,可以进一步细化分析,比如按部门统计薪资总额或计算各地区销售额的平均值。