我有这张 table
----------------
ID | Duration
----------------
1 10
2 10
3 10
我想选择 sum(duration) 大于 15 的 id。换句话说......
-------------------------
ID | Duration | Sum
-------------------------
1 10 10
2 10 20
3 10 30
Sum 在 ID 为 2 的行变得更细。我必须准确地选择这一行。
当然,我不能从存储过程中使用 SUM(),所以我肯定必须使用 JOIN,可能还有 HAVING 而不是 WHERE。问题是我总是得到错误的结果。
最佳答案
为此,您需要一个累积和,MySQL 不直接提供。您可以使用子查询来做到这一点。然后选择右行。
select id, duration, cumdur
from (select id, duration,
(select sum(duration)
from t t2
where t2.duration < t.duration or
(t2.duration = t.duration and t2.id <= t.id)
) as cumdur
from t
) t
where 15 between (cumdur - duration + 1) and cumdur
请注意,当多行具有相同的持续时间时,这按 id
排序。
关于mysql - 选择 SUM 大于 X 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668299/