为了账号安全,请及时绑定邮箱和手机立即绑定

having字句的group by字句同时使用时,前后顺序有要求吗?

select c.dname,avg(a.sal)

from scott.emp a,scott.dept c

where a.deptno=c.deptno

group by c.dname

having avg(a.sal)>2000;

select c.dname,avg(a.sal)

from scott.emp a,scott.dept c

where a.deptno=c.deptno


having avg(a.sal)>2000

group by c.dname;

输出结果是一致的,



正在回答

5 回答

执行顺序是

select     -- 5
  from     -- 1
 where     -- 2
 group by  -- 3
having     -- 4 
 order by  -- 6

规范书写如上描述。

了解执行顺序有利于提高SQL性能

0 回复 有任何疑惑可以回复我~

记住SQL写法的顺序:S-F-W-G-H-O,即select-from-where-group by-having-order by

0 回复 有任何疑惑可以回复我~

查询语句的执行存在先后顺序,具体的执行顺序为:FROM→WHERE→GROUP BY→HAVING→SELECT →ORDER BY
而且 having语句的作用是指出筛选条件,将符合条件的组显示出来。
因此,即使语句的先后顺序对最终查询结果的显示并没有影响,但having语句既然是作为分组的筛选条件,最好也是出现在group by 语句之后。

刚学oracle 半个月,个人理解,望互相指教,谢谢。

0 回复 有任何疑惑可以回复我~

having和where本身是一个类型的函数可以通用 ,便于区分 先分组过滤和先过滤和后分组 建议 having写到groupby后面

1 回复 有任何疑惑可以回复我~

我刚试了一下 结果一下 所以应该没有要求

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

having字句的group by字句同时使用时,前后顺序有要求吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信