14.SQL语句[6] 聚合分组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14.SQL语句[6] 聚合分组相关的知识,希望对你有一定的参考价值。

--======================聚合函数============================
--求和sum    求平均avg   求个数count   最大值max    最小值min
select
    sum(金额) as 总金额,
    avg(金额) as 平均金额,
    max(金额) as 最大金额,
    min(金额) as 最小金额,
    COUNT(*) as 订单数
from 数据

--为什么运行时报错?
select 商品,SUM(金额) as 总金额 from 数据

--聚合之后的1个结果,无法与多行数据对应,所以报错
--结论1:select使用了聚合函数之后,后面不能直接跟其他字段
select SUM(金额) as 总金额 from 数据
select 商品 from 数据

--======================分组统计============================
--统计一下,每个商品的总销售额,按商品类分组统计
--使用了SUM(金额)之后,它就不是表示所有商品的金额总和,而是表示每一个组
--内部的总和
--结论2:select后面如果有聚合,那么如果要跟其他字段,那么“其他字段”
--要么分组、要么聚合。
select 
    商品,
    SUM(金额) as 总金额,
    AVG(金额) as 平均金额, 
    MAX(金额) as 最大金额, 
    MIN(金额) as 最小金额
from 数据 group by 商品-----分组统计中   先执行分组   再执行聚合


--======================分组筛选============================
--统计一下每个部门金额达到100的订单的销售总额
select 销售部门,SUM(金额) as 总销售额 from 数据 group by 销售部门
select 销售部门,SUM(金额) as 总销售额 from 数据 where 金额>=100 group by 销售部门
--where 金额>=100  这个筛选是分组之前对数据源的筛选。


--统计一下销售总额超过8000的部门信息
select 销售部门,SUM(金额) as 总销售额 from 数据
    group by 销售部门 having SUM(金额)>=8000
--having SUM(金额)>=8000  这个筛选是在分组之后的基础上做的筛选

 

以上是关于14.SQL语句[6] 聚合分组的主要内容,如果未能解决你的问题,请参考以下文章

数据聚合与分组运算

将不在聚合函数中的列保留在分组语句中[重复]

SQL语句的补充

SQL语句汇总——聚合函数分组子查询及组合查询

数据库演练外键SQL语句的编写&分组和聚合函数的组合使用

查询分组中的 Oracle SQL 条件聚合函数