9.聚合函数(多行函数)
聚合函数简介
简介
聚合函数也称之为多行函数,组函数或者分组函数。
聚合函数不像单行函数,聚合函数对行的分组进行操作,对每组给出一个结果,
如果在查询中没有分组,那么聚合函数将所有查询到的结果分到一组。
聚合函数类型
- AVG()
- COUNT()
- MAX()
- MIN()
- SUM()
基本语法
SELECT [* | <colimn_name>[,...]] , GROUP FUNTION(column_name) FROM <table_name> [WHERE condition] [GROUP BY <column_name>] [ORDER BY <column_name>]
使用的原则
- DISTINCT 使得函数只考虑不重复的值
- 所有聚合函数忽略空值,为了用一个值代替空值,用ISNULL或COALESCE函数
聚合函数
函数 | 描述 | 示例 |
---|---|---|
AVG(expression) | 返回一个表达式的平均值 | SELECT AVG(Price) AS AveragePrice FROM Products; |
SUM(expression) | 返回指定字段的总和 | SELECT SUM(Qty) AS TotalItemsOrdered FROM OrderDetails; |
MAX(expression) | 返回字段中的最大值 | SELECT MAX(Price) AS LargestPrice FROM Products; |
MIN(expression) | 返回字段中的最小值 | SELECT MIN(Price) AS MinPrice FROM Products; |
COUNT(expression) | 返回查询的记录总数 | SELECT COUNT(ProductID) AS NumberOfProducts FROM Products; |
AVG()函数
-
对分组进行平均值计算
-
arg:参数只能是数字类型,字符类型会返回0
SUM()函数
- 对分组进行求和运算
- arg:参数只能是数字类型,字符类型会返回0
MAX()函数
- 对分组数据查找最大值
- arg:
- 数字类型:找最大值
- 字符类型:找最大字母,升序排序中的第一个
- 日期类型:找最晚的日期
MIN()函数
- 对分组数据查找最小值
- arg:
- 数字类型:找最小值
- 字符类型:找最小字母
- 日期类型:找最早的日期
COUNT()函数
- COUNT(*):返回所有列的行数,包括重复、空值
- COUNT(expr):返回非空值的计数
- COUNT(DISTINCT expr):返回列中不重复的行的计数
数据分组(GROUP BY)
单列分组
语法:
SELECT ... FROM ... WHERE ... GROUP BY ... ORDER BY ...
在没有进行数据分组前,所有聚合函数是将结果集作为一个大的信息组进行分组进行处理。但有时需要用较小的组,用GROUP BY实现。
使用原则:
- 使用WHERE子句,可以在划分行成组以前进行过滤
- 如果有WHERE子句,那GROUP BY 在WHERE后面
- 在GROUP BY子句中必须包括列
多列分组
SELECT department_id,job_id,SUM(salary) FROM employees GROUP BY department_id,job_id;
上面这个代码是先将部门id进行分组,之后在部门id分组之后的结果继续进行岗位的分组。
用having约束分组结果
having是对GROUP BY分组后的结果再进行过滤。
SELECT department_id,MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10000;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义