MySQL を使用した制限を超えた以前のキャッシュサムを持つ最初の行の取得
問題定義:
ID 列とCash 列を持つテーブルが与えられた場合、タスクは、前の行の現金の累積合計が指定された値を超えている最初の行を取得することです。たとえば、必要な制限が 500 の場合、関数は現金の累積合計が 500 を超える 3 行目を返す必要があります。
MySQL ソリューション:
試行中WHERE 句での集計の比較 (例: WHERE SUM(cash) > 500) が失敗した場合は、HAVING 句を利用して集計を比較できます。ただし、HAVING 句には対応する GROUP BY 句が必要です。
これを解決するには、次のクエリを使用できます。
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
このクエリはサブクエリを利用して現金の累積合計を計算します。各行の値は、running_total 列の別名に保存されます。 WHERE句でrunning_total列を参照することで、累積合計が指定した制限を超えた最初の行を取得できます。 LIMIT 1 句により、最初のそのような行のみが返されることが保証されます。
以上がMySQL で累積現金合計が制限を超えた最初の行を見つける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。