首页  >  文章  >  数据库  >  如何在 MySQL 中检索值总和超过阈值的第一行?

如何在 MySQL 中检索值总和超过阈值的第一行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 01:35:30936浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn