group分组查询
什么是分组?
将一个数据集划分成若干个小区域,然后针对若干个小区域进行处理
group by分组
使用特点
- 含义:将查询结果按照1个或多个字段进行分组,字段值相同为一组
group by
可用于单个字段分组,也可用于多个字段分组group by + group_concat()
: 根据分组结果,使用group_concat()来放置每一个分组中某字段的集合。group by + 聚合函数
: 聚合函数在和group by 结合使用的时候,统计对象是每一个分组group by + having
: having作用和where类似,但having只能用于group by对分组后的每组数据进行过滤group by + with rollup
: 在数据表最后新增一行,将记录当前表中该字段对应的操作结果,进行汇总。
-- 按照性别分组,查询所有数据
SELECT gender FROM students GROUP BY gender;
-- 计算每种性别中的人数
SELECT gender, COUNT(*) FROM students GROUP BY gender;
-- 查询同种性别中的姓名
SELECT GROUP_CONCAT(name),gender FROM students GROUP BY gender;
-- 查询每组性别中的平均年龄
SELECT AVG(age),gender FROM students GROUP BY gender;
-- 查询平均年龄超过30岁的性别,以及姓名
SELECT GROUP_CONCAT(name),gender FROM students GROUP BY gender HAVING AVG(age) > 30;
-- with rollup 汇总的作用(了解)
SELECT COUNT(*),gender FROM students GROUP BY gender WITH ROLLUP; -- 对各个性别分组,最后进行汇总