如何使用 MySQL 的 SUM() 函數根據先前值的總和檢索行?

Susan Sarandon
發布: 2024-11-04 16:00:03
原創
348 人瀏覽過

How to Retrieve a Row Based on the Sum of Previous Values Using MySQL's SUM() Function?

在WHERE 子句中使用MySQL SUM() 函數進行行查詢

MySQL 允許使用者在子內執行聚合計算並將其用作條件用於WHERE 子句中的行選擇。但是,了解在這種情況下使用聚合函數的限制非常重要。

考慮以下場景:您有一個包含 id 和 cash 列的表,並且您想要檢索總和的第一行之前的所有現金價值都超過特定門檻。

範例表:

id cash
1 200
2 301
3 101
4 700

預期結果:

對於輸入閾值為500,預期結果為第3行,因為第1 行和第2 行的現金值總和(200 301 = 501) 超過門檻。

錯誤方法:

嘗試使用 WHERE SUM(cash) >

解決方案:

要克服此限制,您可以在中使用 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>
登入後複製

說明:

  1. 子查詢計算每行的現金運作總額使用巢狀 SELECT 語句的每一行。
  2. 子查詢的結果別名為 y。
  3. WHERE 子句檢查一行的運行總計是否超過所需的閾值(在本例中為 500) )。
  4. 最後,LIMIT 子句只檢索第一個符合條件的行。

此方法可確保準確識別所有先前現金值總和超過閾值的第一行.

以上是如何使用 MySQL 的 SUM() 函數根據先前值的總和檢索行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板