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