mysql基础知识理解和sql题讲解分析面试实战(一)之groupBy&&having
2016-03-30 00:00
876 查看
摘要: 本系列主要讲解mysql的基础语法,以及面试题讲解,
一般会通过实例讲解sql语句,达到由浅入深,彻底掌握的地步
使用时需要注意什么
demo :原始表
结果表:根据每位user的rate的平均值更新rate, rate = rate - avg(rate)
实现步骤
step 1 创建表 -若你是想做大数据,一定要控制表字段的大小,字段最好不要为空,为空会导致索引失败
step2 插入数据- 注意插入的时候因id是自增长的,所以不用,但是在表后面需填写你要插入的字段名
step3 执行sql更新查询
分析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 语法
以后继续为大家带来mysql实战系列,为大数据开发打下基础,最后提醒大家,希望大家自己敲sql语句,查看结果,分析错误,那就是真正属于你的知识结构。
QQ交流群: 181666459
一般会通过实例讲解sql语句,达到由浅入深,彻底掌握的地步
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
相关文章推荐
- MySQL中的integer 数据类型
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- MySQL存储过程
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- PropertyChangeListener简单理解
- MySQL创建用户及权限控制