数据库-GROUP BY

作用:group by可以把数据划分为若干个组

用法:group by后接进行分组的依据

group by和distinct进行去重的异同:

distinct:进行两两对比,需要遍历整个表

group by:进行查询前先按照分组属性进行分组,再进行查询

不管是进行单列去重还是多列去重,两者返回的结果都是一样的

但是当数据量比较大时,使用group by的速度要优于distinct

为什么使用group by时不能select *?

举例说明:s表

id

name

score

1

ming

80

2

ming

95

3

ale

70

4

ale

98

5

gala

100

select * 
from s
group by name

执行失败

select name
from s
group by name

执行成功

原因:当我们进行查询时,有group by出现,后台会先进行去重,生成了一个虚拟的表,表中多个name变成一个name,而一个单元格中会出现多个分数 just like

id

name

score

1

2

ming

80

95

3

4

ale

70

98

此时进行查询*,一个单元格中出现多个数据,这是关系型数据库所不允许的,所以结果报错

当我们查询name时可以正常输出,因为name列中,每个单元格始终只有一个数值

so 如何解决?

答案是聚集函数just like:avg,sum,min,max,count

select name,avg(score)as ‘平均分’
from s
group by name

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值