我如何按总和过滤一组元素?,假设我有:
id
1
2
3
4
有没有我可以使用的子句:
select * from numbers where sum = 6
请注意,该查询不会这样做,这是一个或多或少解释我的意思的示例。
这个子句会返回 1、2 和 3?
我猜您希望累积总和等于 6。这是使用标准 SQL 的一种方法:
select id
from numbers n
where 6 = (select sum(n2.id) from numbers n2 where n2.id <= n.id);
编辑:
哎呀,倒过来了:
select id
from numbers n
where 6 >= (select sum(n2.id) from numbers n2 where n2.id <= n.id);
然而,即使没有一个加起来正好是 6,这也会返回值。
对于大小为 2 的元素集,您可以尝试以下操作:
select n.id as "ID1", nn.id as "ID2"
from t1 nn,
(select n.id, (6-n.id) as complete
from t1 n ) n
where nn.id = n.complete
and nn.id != n.id
链接到小提琴