微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在以下条件下找到Sumfield,即``从sumfield<150的表中选择*''

如何解决如何在以下条件下找到Sumfield,即``从sumfield<150的表中选择*''

这是一个查询,将产生以上结果:

SELECT * FROM `users` u
WHERE (select sum(size) from `users` where size <= u.size order by size) < 150
ORDER BY userid

但是,您描述的想要选择最适合给定大小的用户问题装箱问题。这是一个NP- Hard问题,用ANSI sql很难解决。但是,以上内容似乎返回了正确的结果,但实际上,它只是从最小的项目开始,然后继续添加项目,直到垃圾箱已满。

通用,更有效的装箱算法将是从最大的物品开始,并在适合时继续添加较小的物品。该算法将选择用户5和4。

解决方法

我只需要检索大小字段总和为<= 150的特定记录。我有下面的桌子…

userid size
1       70
2      100   
3       50
4       25
5      120
6       90

输出应为…

userid size
1       70
3       50
4       25

例如,如果我们加上70,50,25,我们得到145,即<= 150。

我将如何编写查询来完成此任务?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。