【重学 MySQL】三十七、聚合函数
【重学 MySQL】三十七、聚合函数
- 基本概念
- 5大常用的聚合函数
- COUNT()
- SUM()
- AVG()
- MAX()
- MIN()
- 使用场景
- 注意事项
- 示例查询
聚合函数(Aggregate Functions)在数据库查询中扮演着至关重要的角色,特别是在处理大量数据时。它们能够对一组值执行计算,并返回一个汇总后的单一值。这些函数在处理统计、报告生成以及数据分析等任务时特别有用。
基本概念
聚合函数作用于一组行上,并返回一个单一的汇总值。这组行可以是表中的所有行,也可以是满足特定条件的行(通过WHERE子句指定)。此外,聚合函数经常与GROUP BY子句结合使用,以便对结果集进行分组,并对每个组分别计算聚合值。
5大常用的聚合函数
COUNT()
- 作用:计算行数。
- 用法:
COUNT(*)
:计算包括NULL值在内的行数。COUNT(column)
:计算指定列中非NULL值的行数。COUNT(DISTINCT column)
:计算指定列中不同非NULL值的数量。
- 示例:
SELECT COUNT(*) FROM employees;
计算employees表中的总行数。
SUM()
- 作用:计算数值列中值的总和。
- 用法:
SELECT SUM(column_name) FROM table_name;
- 示例:
SELECT SUM(salary) FROM employees;
计算employees表中所有员工的薪水总和。
AVG()
- 作用:计算数值列的平均值。
- 用法:
SELECT AVG(column_name) FROM table_name;
- 示例:
SELECT AVG(salary) FROM employees;
计算employees表中所有员工的平均薪水。
MAX()
- 作用:返回某列中的最大值。
- 用法:
SELECT MAX(column_name) FROM table_name;
- 示例:
SELECT MAX(salary) FROM employees;
返回employees表中薪水最高的员工的薪水。
MIN()
- 作用:返回某列中的最小值。
- 用法:
SELECT MIN(column_name) FROM table_name;
- 示例:
SELECT MIN(salary) FROM employees;
返回employees表中薪水最低的员工的薪水。
使用场景
- 统计总数:使用COUNT()函数来计算表中的记录数,或者某个特定条件下的记录数。
- 求和:使用SUM()函数来计算数值列的总和,如计算总销售额、总库存量等。
- 计算平均值:AVG()函数用于计算平均值,如平均薪资、平均成绩等。
- 查找极值:MAX()和MIN()函数用于找出某列的最大值和最小值,如最高分、最低分、最高销售额等。
注意事项
- 当聚合函数与GROUP BY子句一起使用时,它们会对每个组分别计算聚合值。
- 聚合函数通常忽略NULL值,但COUNT(*)除外,它会计算包括NULL值在内的所有行数。
- 聚合函数的结果可以作为SELECT列表的一部分返回,也可以用在HAVING子句中作为过滤条件。
- 聚合函数不能嵌套调用聚合函数(即不能直接使用AVG(SUM(column_name))),但可以在子查询中嵌套使用聚合函数。
示例查询
假设有一个名为sales
的表,包含product_id
、sale_date
和amount
等字段,以下是一些使用聚合函数的示例查询:
- 计算总销售额:
SELECT SUM(amount) FROM sales;
- 计算每种产品的平均销售额:
SELECT product_id, AVG(amount) FROM sales GROUP BY product_id;
- 找出销售额最高的产品ID:
SELECT product_id FROM sales GROUP BY product_id ORDER BY SUM(amount) DESC LIMIT 1;
这些聚合函数在数据分析、报表生成等场景中非常有用,能够帮助用户快速地从大量数据中提取出关键信息。