行取得の WHERE 句で MySQL SUM() 関数を使用する
MySQL では、ユーザーがサブクエリ内で集計計算を実行し、それを基準として使用できるようにしますWHERE 句での行選択の場合。ただし、このコンテキストでの集計関数の使用の制限を理解することが重要です。
次のシナリオを考えてみましょう。列 id とCash を持つテーブルがあり、合計が含まれる最初の行を取得したいとします。以前のすべての現金価値が特定のしきい値を超えています。
テーブルの例:
id | cash |
---|---|
1 | 200 |
2 | 301 |
3 | 101 |
4 | 700 |
望ましい結果:
入力しきい値が 500 の場合、行 1 と 2 の現金価値の合計 (200 301 = 501) がしきい値を超えているため、期待される結果は行 3 になります。
間違ったアプローチ:
WHERE SUM(cash) を使用しようとしています> WHERE 句では集計を直接比較できないため、500 では正しい結果が得られません。
解決策:
この制限を克服するには、次の HAVING 句を使用します。サブクエリと組み合わせて、各行の現金の累計を計算します。
<code class="sql">SELECT y.id, y.cash FROM ( SELECT t.id, t.cash, (SELECT SUM(x.cash) FROM TABLE x WHERE x.id <= t.id) AS running_total FROM TABLE t ORDER BY t.id ) y WHERE y.running_total > 500 ORDER BY y.id LIMIT 1;</code>
説明:
このアプローチにより、以前のすべての現金価値の合計がしきい値を超える最初の行が正確に識別されます。 .
以上がMySQL の SUM() 関数を使用して前の値の合計に基づいて行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。