不含集团的条款

问题描述 投票:0回答:1

请帮助我理解这种情况。为什么在文档和其他资源中,我可以找到HAVING子句不能不使用GROUP BY的信息?因为在SQL Developer中测试时,我可以使用HAVING而不使用GROUP BY。谁能澄清这个问题?先谢谢你。

例子:

    select sum(salary) from employees
having sum(salary)>0;

我知道从逻辑上讲这是无稽之谈,但语法上允许这样做。但语法上允许这样做。我想通过1z0-071考试,如果我看到与此相关的问题,那么哪个答案应该是正确的?这就是我困惑的地方。

对不起,这是我的错误。因为我已经在文档中找到了正确的信息。"拥有 "可以不使用 "Group by",但不建议使用。关于 "拥有 "和 "组由 "的错误信息不在文档中。我弄错了,看了其他资源。

主题可以关闭。谢谢大家的知识分享。

sql oracle group-by having
1个回答
2
投票

嗯,是的 - 它的工作原理。

SQL> select count(*) from emp having count(*) > 0;

  COUNT(*)
----------
        14

SQL> select count(*) from emp having count(*) > 20;

no rows selected

SQL>

所以,这不是一个 错误但是,是一种 可疑 至于你要用它来做什么。


0
投票

下面两个语句在逻辑上是一样的,因此我认为你没有因为没有使用 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 Clause

使用HAVING子句将返回的记录组限制为指定条件为TRUE的组。如果省略这个子句,那么数据库将返回所有组的汇总记录。

在where_clause和hierarchical_query_clause之后指定GROUP BY和HAVING子句。如果你同时指定了GROUP BY和HAVING,那么它们可以以任何一种顺序出现。

© www.soinside.com 2019 - 2024. All rights reserved.