如何在 MySQL 中檢索值總和超過閾值的第一行?

Mary-Kate Olsen
發布: 2024-11-04 01:35:30
原創
932 人瀏覽過

How to Retrieve the First Row Where the Sum of Values Exceeds a Threshold in MySQL?

使用 WHERE SUM() 檢索 MySQL 中的特定資料

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中文網其他相關文章!

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