分组 group by
group by
# 对原始数据筛选 分组 在聚合函数的基础上分组,否则没有意义
-
按照性别分组, 查询所有的性别
select gender from students group by gender;
失败select * from students group by gender;
失败 select name from students group by gender; -
计算每种性别中的人数
select gender,count(*) from students group by gender; -
计算男性的人数
select gender,count(*) from students where gender=1 group by gender;
group_concat(…)
分组后显示group_concat()内的内容 ()内写什么,就连接显示什么
- select gender, group_concat(name) from students where gender=1 group by gender;
select gender, group_concat(name, age, id) from students where gender=1 group by gender;
select gender, group_concat(name, “_”, age, " ", id) from students where gender=1 group by gender;
having
# 对结果进行筛选 对分组进行条件判断
注:where对原始表进行条件判断,having 对分组进行条件判断;where在分组前,having在分组后
-
查询平均年龄超过30岁的性别,以及姓名 having avg(age) > 30
select gender, group_concat(name), avg(age) from students group by gender having avg(age)>30; -
查询每种性别中的人数多于2个的信息
select gender, group_concat(name) from students group by gender having count(*)>2;