mysql基础知识理解和sql题讲解分析面试实战(一)之groupBy&&having

mysql 之groupBy&&having 的使用

  • groupby和having在什么情况下使用

  • 使用时需要注意什么

groupby和having在什么情况下使用
  • 问题 :根据平均值分析表

demo :原始表

输入图片说明 结果表:根据每位user的rate的平均值更新rate, rate = rate - avg(rate)

输入图片说明

实现步骤
  • step 1 创建表 -若你是想做大数据,一定要控制表字段的大小,字段最好不要为空,为空会导致索引失败
CREATE table userRate(
id int(2) NOT null auto_increment,
user int(2) not null DEFAULT 0,
rate int(2) not null DEFAULT 0,
PRIMARY KEY(id)
)
  • step2 插入数据- 注意插入的时候因id是自增长的,所以不用,但是在表后面需填写你要插入的字段名
INSERT into userRate(user,rate) VALUES(1,1),(1,3),(1,2),(2,4),(2,4),(2,5),(2,3);
  • step3 执行sql更新查询
update userRate JOIN (SELECT id,USER,AVG(rate) AS avr from userRate GROUP BY user HAVING user= userRate.user) n 
on n.user = userRate.user set userRate.rate= userRate.rate- n.avr

分析step3 执行顺序 step3.1 执行查询操作userRate(隐藏了查询,要不然后面的userRate.user得不到数据), SELECT id,USER,AVG(rate) AS avr from userRate(不是我想黑别人,有些文章写说这条语句是错误的,因为用到了聚合函数,还有其他字段,其他字段必须在groupby 后面出现,实质上mysql并没报错,但是他只显示第一条语句) 输入图片说明 step3.2 执行groupby 分组查询 GROUP BY user 根据用户名分组查询 输入图片说明

step3.3 条件判断having来了 having user= userRate.user

step3.4 join on的组合(下次讲解)

step3.5 update set 语法

结论

什么时候用到group by ,根据字面意思就是分组,比如:某个用户访问哪个网站多少次(sum)统计,某位同学成绩的平均值,having 做个条件判断过滤不要的信息,

以后继续为大家带来mysql实战系列,为大数据开发打下基础,最后提醒大家,希望大家自己敲sql语句,查看结果,分析错误,那就是真正属于你的知识结构。

QQ交流群: 181666459

转载于:https://my.oschina.net/budaoniu/blog/649745

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值