首页 > 数据库 > mysql教程 > 如何在MySQL中找到累计现金金额超过限制的第一行?

如何在MySQL中找到累计现金金额超过限制的第一行?

Linda Hamilton
发布: 2024-11-04 05:31:02
原创
433 人浏览过

How to Find the First Row Where Cumulative Cash Sum Exceeds a Limit in MySQL?

使用 MySQL 检索先前现金金额超出限制的第一行

问题定义:

给定一个包含 id 和 cash 列的表,任务是检索前几行中 cash 的累计总和超过指定值的第一行。例如,如果所需的限制是 500,则该函数应返回现金累计金额超过 500 的第三行。

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板