sql - 需要 T-SQL 查询找到所有可能的方式

标签 sql sql-server sql-server-2008 tsql knapsack-problem

create table #sample (
    product varchar(100),
    Price float
) 

insert into #sample values ('Pen',10)
insert into #sample values ('DVD',29)
insert into #sample values ('Pendrive',45)
insert into #sample values ('Mouse',12.5)
insert into #sample values ('TV',49)

select * from #sample 

考虑这种情况...

我有 1000 美元,我想买上面列出的东西。

我想花掉全部金额

所以我需要一个查询,给出所有产品中有多少单位的成本为 1000 美元

有什么帮助吗?

最佳答案

您提到的问题也称为 knapsack problem 。您可以使用一系列算法来解决这个问题。最著名的是动态规划,它要求权重是整数,所以你必须以美分来衡量。它们都不容易在 t-sql 中实现。

我实际上在 sql server 中找到了某人实现的链接:http://sqlinthewild.co.za/index.php/2011/02/22/and-now-for-a-completely-inappropriate-use-of-sql-server/

注意标题,他们也发现这是对数据库的不当使用。 我建议您用不同的语言来解决这个问题。

关于sql - 需要 T-SQL 查询找到所有可能的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23166486/

相关文章:

mysql - SQL - sum (column 1 + column2 + column3 ) 并在每组中选择总和的最大值

c# - 需要一种从具有层次结构数据的表中获取记录 ID 的方法

python - 如何为 SQL Server/Linux 堆栈的 python/pyodbc/unixODBC/MS ODBC 驱动程序 11 设置数据库连接超时?

sql - 如何在另一个存储过程中使用值?

基于 SELECT 的 SQL 条件 UPDATE

sql - 在 Oracle 中使用数据透视表的建议

c# - 如何在不定义目标表的情况下使用 BulkCopy

sql-server - SQL 服务器 - 估计执行时间并获取更改表命令的进度

sql-server - SQL Server 2008 : Why table scaning when another logical condition is satisfied first?

java - 有没有办法在 JPA 查询中从数据库中选择特定列