0

我如何按总和过滤一组元素?,假设我有:

id
1
2
3
4

有没有我可以使用的子句:

select * from numbers where sum = 6

请注意,该查询不会这样做,这是一个或多或少解释我的意思的示例。

这个子句会返回 1、2 和 3?

4

2 回答 2

1

我猜您希望累积总和等于 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,这也会返回值。

于 2013-08-22T02:25:33.017 回答
0

对于大小为 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

链接到小提琴

于 2013-08-22T02:21:38.603 回答