SQL聚合函数详解:AVG、SUM、MIN、MAX与COUNT在实践中的应用

需积分: 0 0 下载量 132 浏览量 更新于2024-08-05 收藏 635KB PDF 举报
本章节主要讲解了SQL中的聚合函数,由尚硅谷的宋红康讲师(江湖人称:康师傅)授课。在SQL中,聚合函数是一类特殊的函数,用于对一组数据进行汇总处理,它们将输入的一组数据集合转化为单个输出值,从而实现数据分析的简化。 聚合函数主要有以下几种类型: 1. **AVG()**:用于计算数值型数据的平均值,例如计算员工工资的平均数。 2. **SUM()**:用于求和,如求工资总额或者特定列的数值总和。 3. **MAX()** 和 **MIN()**:分别返回最大值和最小值,可用于比较范围或者查找极端值。 4. **COUNT()**:有两个用法: - COUNT(*):返回表中记录的总数,包括NULL值。 - COUNT(expr):返回expr非空值的记录数,expr可以是列名。 关于使用COUNT(*)、COUNT(1)和COUNT(列名)的区别,对于MyISAM引擎的表,由于其内部计数机制,它们的效果是相同的,但InnoDB引擎下有所不同。COUNT(*)和COUNT(1)在InnoDB中需要遍历所有行来计算,复杂度为O(n),而COUNT(列名)在查询时会跳过NULL值,效率更高。然而,推荐使用标准的COUNT(*),因为它不受数据库引擎限制,且能够正确统计NULL值。 举例来说,以下是一些SQL查询示例: - 计算job_id为'rep%'的员工的平均工资、最高工资和最低工资: ```sql SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM employees WHERE job_id LIKE '%REP%'; ``` - 获取employees表中特定部门(例如50号部门)的所有记录数: ```sql SELECT COUNT(*) FROM employees WHERE department_id = 50; ``` - 求commission_pct列中非NULL值的数量: ```sql SELECT COUNT(commission_pct) FROM table_name; ``` 理解并熟练运用SQL的聚合函数是数据分析和报表生成的关键,通过它们可以快速提取有价值的信息,优化查询性能,并确保结果准确无误。