ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql加强(3)~分组(统计)查询

2022-01-27 18:35:12  阅读:160  来源: 互联网

标签:group sal 查询 分组 mysql deptno where select




作者:一乐乐
欢迎大家来一乐乐的博客园

一、分组(统计) 查询

1、语法 :

select [distinct] *| 分组字段1[别名] [,分组字段2[别名],...] | 统计函数

from 表名 [别名]

[where 条件(s)]

[group by 分组字段1[,分组字段2]]

[having 分组后的过滤条件(可以使用统计函数)]

[order by 排序字段 asc|desc[,排序字段 asc|desc]];



2、注意分组的细节:

❀ 分组查询:select 后的字段必须是分组字段(跟在group by 后面的字段) 或 统计函数字段

#错误使用分组(统计)查询【查询的字段不是分组字段】
select empno, count(empno) from emp;

❀ 不能在where 子句中限制组,即不能在where子句中使用组函数(统计函数)

#错误使用分组(统计)查询【组函数出现在where的子句中】
select avg(sal) from emp where avg(sal) > 2000 group by deptno;

❀ 对分组的结果进行限制(过滤)---使用having进行筛选

#查询各个部门的平均工资
select deptno, avg(sal) from emp group by deptno;
#查询平均工资高于2000的部门和其平均工资 ('平均工资高于2000'是分组之后的筛选条件)
select avg(sal) from emp group by deptno having avg(sal) > 2000;

❀ 并列分组:

  • 单列分组:水果分为苹果、香蕉、葡萄。一共分为3个组。

  • 什么是并列分组:水果分为苹果、香蕉、葡萄;然后苹果又可以分为红富士、丑苹果;香蕉又分为芭蕉、小米蕉;葡萄又分为红提、青提。一共分成6个组。

#查看各个部门和岗位的平均工资
select deptno, job, avg(sal) from emp group by deptno, job;



■ sql语句的执行顺序:从哪张表过滤掉不合法数据,然后分组(对分组结果再过滤一下)显示出来,进行排序、分页。

from where group by having select order by limit


■ where 和 having 执行的先后:

① where 是在分组之前进行筛选,先过滤掉不合法数据, 在 where 之中不能使用统计函数(组函数)。

② having 是在分组之后进行筛选,对组的结果进行过滤。


● 文章来源于:一乐乐的博客园

● 转载请注明出处

标签:group,sal,查询,分组,mysql,deptno,where,select
来源: https://www.cnblogs.com/shan333/p/15850580.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有