mysql分组查询局部显示_mysql 分组查询group by-select-初学教程 2

七,分组查询(group by)

作用:通过哪个或哪些字段进行分组

用法:group by 字段名称

重点结论:

1,若一条DQL语句中有group by子句,那么select 关键词后面只能紧跟 分组函数 + 参与分组的字段;

切记,where后面不能跟分组函数。

2,如果使用了 order by ,order by 必须放到 group by后面;(select语句中,order by 为最后)

7-1按照单个字段分组

eg1:找出每个工作岗位的最高薪水?涉及 group by、max(sal)

eg2:计算每个工作岗位的最高薪水,并且按照由低到高进行排序?

eg3:计算每个部门的平均薪水?

>select deptno,avg(sal) from emp group by deptno;

7-2按照多个字段分组

eg1:计算出不同部门不同岗位的最高薪水,并按照部门排序

> select deptno,job,max(sal) from emp group by deptno,job order by deptno;

eg2:找出每个工作岗位的最高薪水,除MANAGER之外

> select job,max(sal) from emp where job<>'MANAGER'group by job;

7-3对分组后的数据进行筛选--having

作用:如果想对分组的数据再进行过滤,需要使用having子句。where 和 having 都是为了完成数据的过滤,它们后面都是添加条件;

where 与 having 区别:

where 是在 group by之前完成筛选;

having 是在 group by 之后完成筛选;

eg;找出每个工作岗位的平均薪水,要求显示平均薪水大于2000的;

> select job,avg(sal) from emp group by job having avg(sal)>2000;

But:以下的写法是错误的!!!where关键字后面不能直接使用分组函数,这与SQL语句的执行顺序有关系,它会先执行 from emp,然后再进行 where 条件过滤,where条件过滤结束之后再执行 group by 分组,之后才会显示出查询结果。

注意:

能够在where在过滤的数据不要放到having中进行过滤,否则影响SQL语句的执行效率。

八,select语句总结

完整的select语句如下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值