sql >> データベース >  >> RDS >> Oracle

where句で集計関数が許可されないのはなぜですか

    SUM()を使用できない理由 WHEREで 節は節の評価の順序です。

    FROM 行を読み取る場所を示します。行がディスクからメモリに読み取られると、WHEREがチェックされます。 条件。 (実際、多くの場合、WHEREに失敗する行 句はディスクからも読み取られません。 「条件」は、正式には述語として知られています。 また、一部の述語は、クエリ実行エンジンによって、ベーステーブルから読み取られる行を決定するために使用されます。これらはアクセスと呼ばれます 述語。)ご覧のとおり、WHERE 句は、エンジンに提示されるときに各行に適用されます。

    一方、集約は、すべての行(すべての述部を検証する)が読み取られた後にのみ実行されます。

    これについて考えてみてください:SUM() WHEREを満たす行にのみ適用されます 条件。 SUM()を置くと WHEREで 節、あなたは循環論理を求めています。新しい行はWHEREを通過しますか 句?どうすればわかりますか?合格した場合は、SUMに含める必要があります 、ただし、含まれていない場合は、SUMに含めないでください。 。では、どうすればSUMを評価できますか 状態?



    1. PostgreSQL9.0でのPgbouncerを使用した接続プール

    2. ホスト(Windows)からVirtualBoxのOracleDBにアクセスする方法

    3. SQLServerシステムデータベースのメンテナンス

    4. 成功したMySQL/MariaDBのバックアップおよびリカバリ戦略