SUM()
を使用できない理由 WHERE
で 節は節の評価の順序です。
FROM
行を読み取る場所を示します。行がディスクからメモリに読み取られると、WHERE
がチェックされます。 条件。 (実際、多くの場合、WHERE
に失敗する行 句はディスクからも読み取られません。 「条件」は、正式には述語として知られています。 また、一部の述語は、クエリ実行エンジンによって、ベーステーブルから読み取られる行を決定するために使用されます。これらはアクセスと呼ばれます 述語。)ご覧のとおり、WHERE
句は、エンジンに提示されるときに各行に適用されます。
一方、集約は、すべての行(すべての述部を検証する)が読み取られた後にのみ実行されます。
これについて考えてみてください:SUM()
WHERE
を満たす行にのみ適用されます 条件。 SUM()
を置くと WHERE
で 節、あなたは循環論理を求めています。新しい行はWHERE
を通過しますか 句?どうすればわかりますか?合格した場合は、SUM
に含める必要があります 、ただし、含まれていない場合は、SUM
に含めないでください。 。では、どうすればSUM
を評価できますか 状態?