簡體   English   中英

沒有分組依據的子句

[英]Having clause without Group by

請幫助我了解這種情況。 為什么在文檔和其他資源中我可以找到沒有 GROUP BY 就不能使用 HAVING 子句的信息? 因為在 SQL Developer 中進行測試時,我可以在沒有 GROUP BY 的情況下使用 HAVING。 誰能澄清一下? 提前致謝。

例子:

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

我明白這在邏輯上是無稽之談。 但是 syntaxis 允許這樣做。 我想通過考試 1z0-071,如果我會看到與此相關的問題,那么哪個答案應該是正確的? 這就是讓我困惑的地方。

對不起,是我的錯。 因為我已經在文檔中找到了正確的信息。 “Having”可以不用“Group by”,但不推薦。 文檔中沒有關於“Having”和“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 子句

使用 HAVING 子句將返回行的組限制為指定條件為 TRUE 的那些組。 如果省略此子句,則數據庫返回所有組的摘要行。

在 where_clause 和 hierarchical_query_clause 之后指定 GROUP BY 和 HAVING。 如果同時指定 GROUP BY 和 HAVING,則它們可以按任意順序出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM