网站建设的客户都在哪里,海外建站平台,广州网站二级等保,wordpress密码忘记了怎么办目录
having子句
having和where的区别 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
现在要求查询出每个职位的名称#xff0c;职位的平均工资#xff0c;但是要求显示平均工资高于 200 的职位
按照职位先进行分组#xff0c;同…目录
having子句
having和where的区别 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
现在要求查询出每个职位的名称职位的平均工资但是要求显示平均工资高于 200 的职位
按照职位先进行分组同时统计出每个职位的平均工资随后要求只显示那些平均工资高于 200的职位信息
既然现在要对显示的数据进行筛选自然就会想到使用 WHERE 子句
SQL select job,avg(sal)2 from emp3 where avg(sal)20004 group by job;
where avg(sal)2000*
第 3 行出现错误:
ORA-00934: 此处不允许使用分组函数
此时直接告诉用户where子句上不允许出现统计函数分组函数
因为 group by 子句是在 where子句之后运行的运行 where子句时还没有进行分组自然就无法进行统计
所以在这样的 情况下就必须使用另外一个子句完成 having子句
而此时的 SQL 语法结构变为如下形式
【确定要显示的数据列】select [distinct] * | 分组列 [ 别名 ] , 分组列 [ 别名 ] ...
【确定数据来源行与列的集合】from 表名称 [ 别名 ], 表名称 [ 别名 ],...
【针对数据行进行筛选】[where 限定条件 (s)]
【针对筛选的行分组】[group by 分组字段 , 分组字段 , 分组字段 ,...]
【针对筛选的行分组】[having 分组过滤 ]
【对选定数据的行与列排序】[order by 排序字段 [asc | desc], 排序字段 [asc | desc],...]
语法结构在前面的语法基础上增加 having子句实现筛选的行分组
having子句
SQL select job,avg(sal)2 from emp3 group by job4 having avg(sal)2000;JOB AVG(SAL)
------------------ ----------
ANALYST 3000
MANAGER 2758.33333
PRESIDENT 5000
having子句是select语句的可选子句
它用于过滤由group by 子句返回的行分组
这就是为什么having子句通常与group by子句一起使用的原因
having和where的区别 where 不能放在group by 后面 having是跟group by 连在一起用的放在group by 后面此时的作用相当于where hwere后面的条件中不能有聚集函数比如sum(),avg()等而having可以