通过在SQLite中运行total来限制

时间:2010-10-24 16:38:12

标签: sql sqlite

假设我有一个这样的表(按id排序):

id    amount
---   ---
1     10
2     15
3     10
4     30

我想要一个返回行的查询,使得amount的总和大于给定的数字。因此(在不存在的语法中)SELECT id, amount LIMIT BY running_total(amount) 20选择前2行,... LIMIT BY running_total(amount) 60选择所有行。我无法更改架构以保持预先计算的运行总计。这可以合理有效地完成吗?如果答案仅适用于SQLite,那将是可以接受的。

1 个答案:

答案 0 :(得分:1)

您可以使用子查询对所有具有较低ID的行进行求和:

select  *
from    YourTable t1
where   20 > coalesce(
        (
        select  sum(amount)
        from    YourTable t2
        where   t2.id < t1.id
        ), 0)

coalesce是捕获第一行,其总和为null