SQL group by使用

1、GROUP BY columns1

字面上理解为对制定的’数据集‘按照columns1进行分组,分成一个个’小区域‘,然后对这些’小区域‘进行处理。

2、原始表aa

原始表

3、简单 group by
示例 1

SELECT 类别, SUM(数量) AS ab
FROM aa
GROUP BY 类别

结果按照’类别‘进行分类汇总。
这里写图片描述

4、group by 和 order by
示例 2

SELECT 类别, SUM(数量) AS ab
FROM aa
GROUP BY 类别
ORDER BY ab DESC

结果:
这里写图片描述

5、group by 与select 中字段的限制
示例 3

SELECT 类别, SUM(数量) AS ab,摘要
FROM aa
GROUP BY 类别
ORDER BY ab DESC

结果

这里写图片描述

如果SQL语句带group by 则select 后面的字段,要么包含在group by后面作为分组依据,要么被包含在聚合函数中。

6、group by columns1, columns2
示例 4

SELECT 类别,摘要 ,SUM(数量) AS ab
FROM aa
GROUP BY 类别,摘要
ORDER BY 类别

结果

这里写图片描述

如果 (类别+摘要) 都一样则合并为一组,如果有任何一个不一样,则分到不同组。

7、 group by 与聚合函数

局和函数

这里写图片描述

示例 5 AVG函数,求各组平均值

SELECT 类别, avg(数量) AS 平均值 
FROM aa 
GROUP BY 类别;

结果

这里写图片描述

所以,平均值AVG是先按分组进行SUM,然后除以每个分组中的记录个数。

示例6 COUNT(*)统计每个分组的记录个数

select 类别, count(*) AS 记录数 from aa group by 类别;

结果

这里写图片描述

count(*) 是用来计算每个分组中记录的个数。

8、 where 和 having 的区别

where的作用是在查询结果分组前,将不符合where条件的记录去掉,即在分组前过滤数据,在where的条件中,不能包含聚合函数。

having 的作用是发生在查询结果分组后,将符合条件的分组筛选出来,having的条件中经常包含聚合函数。

示例 7

select 类别, SUM(数量)from aa
where 数量 > 8
group by 类别
having SUM(数量) > 10

结果

这里写图片描述

示例 8

select 类别, SUM(数量)from aa
where 数量 > 8
group by 类别
having SUM(数量) > 10
AND 
SUM(数量) < 17

结果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值