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