SQL语句中的Group BY分组查询

Group BY 分组

group by 语句根据一个或多个列对结果集进行分组,一般情况下,是用与数据的统计或计算,配合聚合函数使用

统计 users 表中 男女生人数
– 普通查询

select count(*) from users where sex = '女';
select count(*) from users where sex = '男';

– 分组查询

select sex,count(*) from users group by sex;
+------+----------+
| sex  | count(*) |
+------+----------+
|| 4 		  |
|| 5 		  |
+------+----------+

统计1班和2班的人数

select classid,count(*) from users group by classid;
+---------+----------+
| classid | count(*) |
+---------+----------+
| 1 	  | 5 		 |
| 2 	  | 4 		 |
+---------+----------+

– 分别统计每个班级的男女生人数

select classid,sex,count(*) as num from users group by classid,sex;
+---------+-----+-----+
| classid | sex | num |
+---------+-----+-----+
| 1 	  || 2   |
| 1 	  || 3   |
| 2 	  || 2   |
| 2 	  || 2   |
+---------+-----+-----+

注意,在使用group by分组时,一般除了聚合函数,其它在select后面出现的字段列都需要出现在grouop by 后面

Having 子句
having时在分组聚合计算后,对结果再一次进行过滤,类似于where,
where过滤的是行数据,having过滤的是分组数据

– 要统计班级人数

select classid,count(*) from users group by classid;

– 统计班级人数,并且要人数达到5人及以上

select classid,count(*) as num from users group by classid having num >=5;

版权声明:本文为weixin_46223196原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。