【发布时间】:2014-01-28 00:39:25
【问题描述】:
这里是表T :-
id num
-------
1 50
2 20
3 90
4 40
5 10
6 60
7 30
8 100
9 70
10 80
以下是虚构的 sql
select *
from T
where sum(num) = '150'
预期结果是:-
(A)
id num
-------
1 50
8 100
(B)
id num
-------
2 20
7 30
8 100
(C)
id num
-------
4 40
5 10
8 100
'A' 案例是最优选的!
我知道这种情况与组合有关。
在现实世界中 - 客户从商店获取商品,并且由于他与商店之间的协议,他每周五付款。付款金额不是项目的确切总数 例如:他得到了 5 本书 50 欧元(= 250 欧元),周五他带来了 150 欧元,所以前 3 本书是完美的匹配 - 3 * 50 = 150。我需要找到这 3 本书的 ID!
任何帮助将不胜感激!
【问题讨论】:
-
或者
(3,90);(6,60),或者(9,70);(10,80),为什么第一个选项是“最喜欢的”? -
我认为这个问题需要迭代的方法,这不是SQL的强项。
-
@Lamak 第一个选项是“最喜欢的”,因为它的行数较少。但它是可选的
-
正如@Lamak 所说:
3 (90) and 6 (60)、9 (70) and 10(80)之间的组合也会产生 2 行。
标签: sql sql-server sql-server-2012 subset-sum