Oracle SQL选择语法,带有GROUP BY和HAVING子句

5

我正在学习Oracle SQL考试的一些SQL语法,发现了一些令人困惑的地方。

根据官方参考资料,select语法如下:

SELECT
    [ hint ]
    [ { { DISTINCT | UNIQUE } | ALL } ]
   select_list
     FROM { table_reference | join_clause | ( join_clause ) }
            [ , { table_reference | join_clause | (join_clause) } ] ...
     [ where_clause ]
     [ hierarchical_query_clause ]
     [ group_by_clause ]
     [ HAVING condition ]
     [ model_clause ]

根据此,您不能在GROUP BY子句之前使用HAVING子句。但是,如果我在测试服务器上执行以下SQL:
select 
   department_id , count (*)      
from 
    employees 
having 
    count(*) > 6 
group by 
    department_id ; 

它不会产生语法错误,可以有人帮忙解释一下吗?我不想认为参考文档是错的,但如果是的话,我需要确认一下。


当您更改“having”语句的位置时,是否会获得不同的结果? - Shai Aharoni
no difference in the result . - user2081775
在这里,http://www.oracle.com/technetwork/community/developer-vm/index.html,下载数据库应用程序开发模板并使用Oracle VirtualBox打开它。 - user2081775
1个回答

5
此处所述:
使用HAVING子句将返回的行组限制为满足指定条件为TRUE的组。如果省略此子句,则数据库将返回所有组的摘要行。 在where_clause和hierarchical_query_clause之后指定GROUP BY和HAVING。如果同时指定GROUP BY和HAVING,则它们可以以任何顺序出现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接