MySQL には、カラム内の値の合計を計算するための SUM() 集計関数が用意されています。 SUM() は集計結果を取得するために SELECT クエリでよく使用されますが、特定の制限付きで WHERE 句でも使用できます。
指定されたシナリオの目的は、テーブルの最初の行を取得することです。前の行の現金価値の合計が指定されたしきい値を超えています。 WHERE 句で「WHERE SUM(cash) > 500」を使用すると、このコンテキストでは集計を直接比較できないため、望ましい結果が得られません。
望ましい機能を実現するには、HAVING 句を次の中で使用する必要があります。 GROUP BY 句と組み合わせて使用します。ただし、HAVING 句には GROUP BY 句の定義が必要です。したがって、この場合、グループ化は意味がありません。
解決策は、WHERE 句内でネストされたサブクエリを利用することです。このアプローチにより、各行までの現金価値の累計を計算し、その値を比較に使用することができます。次のクエリはこれを実現します。
<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>
WHERE 句で列エイリアス「running_total」を参照することにより、累計を指定されたしきい値と比較できます。 LIMIT 句により、条件を満たす最初の行のみが返されるようになります。
以上がMySQL で値の合計がしきい値を超えた最初の行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。