请帮助我理解这种情况。为什么在文档和其他资源中,我可以找到HAVING子句不能不使用GROUP BY的信息?因为在SQL Developer中测试时,我可以使用HAVING而不使用GROUP BY。谁能澄清这个问题?先谢谢你。
例子:
select sum(salary) from employees
having sum(salary)>0;
我知道从逻辑上讲这是无稽之谈,但语法上允许这样做。但语法上允许这样做。我想通过1z0-071考试,如果我看到与此相关的问题,那么哪个答案应该是正确的?这就是我困惑的地方。
对不起,这是我的错误。因为我已经在文档中找到了正确的信息。"拥有 "可以不使用 "Group by",但不建议使用。关于 "拥有 "和 "组由 "的错误信息不在文档中。我弄错了,看了其他资源。
主题可以关闭。谢谢大家的知识分享。
嗯,是的 - 它的工作原理。
SQL> select count(*) from emp having count(*) > 0;
COUNT(*)
----------
14
SQL> select count(*) from emp having count(*) > 20;
no rows selected
SQL>
所以,这不是一个 错误但是,是一种 可疑 至于你要用它来做什么。
下面两个语句在逻辑上是一样的,因此我认为你没有因为没有使用 group by
.这里的db_fiddle
报表1:-
select count(1)
from foo
group by null
having count(*) > 1;
声明2:-
select count(1)
from foo
having count(*) > 1;
Oracle文档中说了以下内容,但没有任何地方提及 having
后面应始终跟着 group by
使用HAVING子句将返回的记录组限制为指定条件为TRUE的组。如果省略这个子句,那么数据库将返回所有组的汇总记录。
在where_clause和hierarchical_query_clause之后指定GROUP BY和HAVING子句。如果你同时指定了GROUP BY和HAVING,那么它们可以以任何一种顺序出现。