首頁 >資料庫 >mysql教程 >如何在MySQL中查詢先前值總和超過閾值的行?

如何在MySQL中查詢先前值總和超過閾值的行?

Susan Sarandon
Susan Sarandon原創
2024-11-05 01:35:01428瀏覽

How to Query for Rows Where the Sum of Previous Values Exceeds a Threshold in MySQL?

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

使用MySQL 表時,可能需要根據聚合計算檢索行,例如先前值的總和。但是,直接在 WHERE 子句中使用 SUM() 可能不會產生預期結果。

假設您有一個包含「id」和「cash」列的表:

id | cash
1    200
2    301
3    101
4    700

要檢索先前所有現金總和超過特定值(例如500)的第一行,使用WHERE SUM(cash) > 500 將無法如預期般運作。

使用 HAVING 子句的解決方案

MySQL 允許在 HAVING 子句而不是 WHERE 子句中進行聚合比較。要獲得所需的結果,您可以使用以下查詢:

GROUP BY ...
HAVING SUM(cash) > 500

但是,這需要定義 GROUP BY 子句,這可能不是必需的。

使用巢狀帶有運行總計的子查詢

另一種方法是使用巢狀子查詢來計算運行總計,然後將其與WHERE 子句中的指定值進行比較:

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

In在該查詢中,子查詢用於計算表中每一行的運行總計。別名 running_total 用於在 WHERE 子句中引用該值。新增 LIMIT 子句以僅傳回符合條件的第一行。

這種方法可以直接比較 WHERE 子句中的聚合值,並產生所需的結果,而不需要 GROUP BY 子句。

以上是如何在MySQL中查詢先前值總和超過閾值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn