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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值