我一直在通过一些sql语法来学习oracle sql考试,但发现有些令人困惑
根据官方参考,选择语法如下:
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子句将返回的行的组限制为指定条件为TRUE的组。如果省略此子句,则数据库将返回所有组的摘要行。 在where_clause和hierarchical_query_clause之后指定GROUP BY和HAVING。如果同时指定GROUP BY和HAVING, 则它们可以按任一顺序出现。
使用HAVING子句将返回的行的组限制为指定条件为TRUE的组。如果省略此子句,则数据库将返回所有组的摘要行。
在where_clause和hierarchical_query_clause之后指定GROUP BY和HAVING。如果同时指定GROUP BY和HAVING, 则它们可以按任一顺序出现。