我一直在通过一些sql语法来学习oracle sql考试,我发现了一些比较混乱的东西
基于official引用,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 ;
它不会产生语法错误,有人可以帮忙解释一下吗?我不认为参考文档是错误的,但如果需要,我需要一些确认。
答案 0 :(得分:5)
如上所述here:
使用HAVING子句将返回行组限制为指定条件为TRUE的那些组。如果省略此子句,则数据库将返回所有组的摘要行。
在where_clause和hierarchical_query_clause之后指定GROUP BY和HAVING。如果同时指定GROUP BY和HAVING,则可以按任意顺序显示。