26-group by的总结

group by的使用


1.分类汇总



原始数据

1462807341355039392.png

查询各个名族分别有多少人?

select  nation,count(nation) from  A   group  by nation;

执行结果:

1462807402608053554.png


2.group by 多列

“多列分组”实际上就是就是按照多列合并后的值进行分组

例如:

    根据nation和性别进行分组

select nation,sex,sum(score) from  A  group by  nation,sex;

执行结果:


1462807703411089511.png

如上,就是将nation和sex都相同的列,进行合并,然后进行分组。

Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

select  nation,count(nation) from  A   group  by nation having  count(nation)>2;

Having和Where的联合使用方法
select  nation,count(nation) from  A where nation!='汉族'   group  by nation having  count(nation)>1;


注意:在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。


练习:

查询每位同学的课程门数、总成绩、平均成绩

原始数据

1462808550133034876.png

select name,count(subject),sum(score),avg(score)  from A group by name;

执行结果:

1462808863014091646.png






小结:

1.group by与聚合函数组合经常使用做分类汇总查询。

2.group by 多列,就是合并多列中相同的列。

3.select中指定查询的列,要么跟在group by后面作为分组依据,要么包含在聚合函数中。

4.where & group by 先过滤,再分组。having & group by 先分组,再过滤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Muxiyale

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值