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

来源:2-7 [Oracle] having子句的使用以及和where的区别

慕粉3428584

2016-08-06 20:44

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回答

  • 慕斯卡6169147
    2020-11-26 15:14:42

    执行顺序是

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

    规范书写如上描述。

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

  • 慕前端524881
    2018-12-01 15:21:02

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

  • 枪或五毛钱
    2017-10-14 10:32:34

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

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

  • 流芒阿
    2016-11-11 13:23:03

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

  • 花开宿语_草莓君
    2016-08-07 15:23:25

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

Oracle高级查询

数据库开发中应用广泛的高级查询,本教程通过大量的案例详细讲解

62884 学习 · 144 问题

查看课程

相似问题