SQL group by使用

来源:互联网 发布:喜马拉雅电台 知乎 编辑:程序博客网 时间:2024/05/21 22:26

1、GROUP BY columns1

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

2、原始表aa

原始表

3、简单 group by
示例 1

SELECT 类别, SUM(数量) AS abFROM aaGROUP BY 类别

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

4、group by 和 order by
示例 2

SELECT 类别, SUM(数量) AS abFROM aaGROUP BY 类别ORDER BY ab DESC

结果:
这里写图片描述

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

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

结果

这里写图片描述

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

6、group by columns1, columns2
示例 4

SELECT 类别,摘要 ,SUM(数量) AS abFROM aaGROUP 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 aawhere 数量 > 8group by 类别having SUM(数量) > 10

结果

这里写图片描述

示例 8

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

结果

这里写图片描述

0 0