您的位置:首页 > 数据库

SQL group by使用

2015-07-15 19:09 232 查看
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


结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql