作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
假设我有这张 table
id | cash
1 200
2 301
3 101
4 700
我想返回第一行,其中所有先前现金的总和大于某个值:
例如,如果我想返回之前所有现金的总和大于 500 的第一行,则应该返回第 3 行
如何使用 mysql 语句做到这一点?
使用 WHERE SUM(cash) > 500
不工作
最佳答案
您只能在 HAVING 子句中使用聚合进行比较:
GROUP BY ...
HAVING SUM(cash) > 500
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
因为聚合函数出现在子查询中,所以可以在 WHERE 子句中引用它的列别名。
关于mysql - 在 WHERE 子句中使用 mysql SUM(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284409/
我是一名优秀的程序员,十分优秀!