Group by having组函数的where

我们在使用组函数(avg(),sum(),max(),min(),count())的时候有的地方需要对组函数进行筛选,我们能不能用where来操作呢?
答案是不能的 因为使用组函数如果有别的需求我们就必须写Group by having了
不然就会报错的
在这里插入图片描述

可以看到我在where使用组函数然后就报错了。
那不可以使用where来进行数据筛选的话我就试试用Group by having看看
在这里插入图片描述

这里是使用了group by having的,
如果我们使用了组函数还要对数据进行筛选就要用上group by having了 语法也不难
如上图在select语句查询的列没有用到组函数的都要放在group by 那 然后条件语句就要在having那段写
注意 没有用到组函数的列要放到group by那 否则会报错。
Group by 是可以单独写having的 它们是一起的。只要你查询的列都是用到组函数就不会报错
注:写group by的时候也不是一定要把having带着的,单独写group by是Oracle允许的

我们如果要写having的话也可以不一定要带上group by 这个是有一定要求的 本来是不允许的,但是按下面的写法就可以单独写having。这个是看个人需要,怎么理解就看个人的思维的了,但是编程的话万变不离其宗,主要核心思维没有错。 怎么去用自己的眼光自己的理解就是看人的

但要单独使用having的话就要注意一点 就是筛选的条件的依据 如下图 筛选的条件是max(salary)我的select那也出现了所以成立,如果筛选的条件不是在select出现的话就会报错的
在这里插入图片描述

这样就不会出现错误,因为max(salary)在select出现。

猜你喜欢

转载自blog.csdn.net/weixin_44538566/article/details/89080466