首页 > 数据库 > mysql教程 > 如何使用 MySQL 的 SUM() 函数根据先前值的总和检索行?

如何使用 MySQL 的 SUM() 函数根据先前值的总和检索行?

Susan Sarandon
发布: 2024-11-04 16:00:03
原创
410 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板