sql - MySQL 查找小计

标签 sql mysql group-by aggregate subtotal

编辑:

有人告诉我,让你们阅读意味着我得到的关注较少。我很抱歉。这是一个更简单的版本:

比尔从一家商店买了值(value) 100 美元的元素。

他想退回足够多的元素,正好能收回 30 美元。

这家商店有一个返回点系统可以帮助他做到这一点。

这是他扫描元素后的数据:

       item ¦   price ¦

socks             4.00
cheap tv         22.00
book on tape      9.00
book on paper     7.00
party hats        3.00
picture frame    10.00
hammer            5.00
juicer           16.00
mysql guide      24.00

total items  ¦ total price ¦
            9   100.00

Option 1
===============
item ¦          price ¦
cheap tv        22.00
party hats       3.00
hammer           5.00
===============

Option 2
===============
item ¦          price ¦

socks            4.00
picture frame   10.00
juicer          16.00
===============

Option 3
===============
item ¦          price ¦

book on tape    9.00
hammer          5.00
juicer         16.00

我可能错过了一些选项,因为所有这些都是我编的。

所以,最大的问题是:

有没有一种方法(可能是 GROUP BY)让一个查询返回所有可能的项目组合?

谢谢!

一个

最佳答案

您要求的所有子集的总和恰好为 30 美元。

这听起来很像 subset sum problem , 和 knapsack problem ,所以我强烈怀疑你可以用一个简单的查询来做到这一点。您可能不得不求助于 T-SQL,但即使那样也可能看起来很难看。

我认为编程是通往这里的道路。

关于sql - MySQL 查找小计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/397384/

相关文章:

sql - 捕获前 5 行并组合其余的 SQL Server

MySQL,复制有更改的行

mysql - 将MySQL数据库复制到另一台机器

mysql - 在 3 个表之间获取 2 个有效、独立的内部联接作为一个查询

sql - 修剪字符串的一部分

hadoop - 需要一种方法来过滤 HIVE 中某个 id 具有多个记录的记录的数据

mysql - 如何使用 GROUP_CONCAT() 排除没有相关行的连接表

sql - SQLite子查询尝试查找另一列中是否不存在ID

php - 在目标页面上通过 GET 变量显示时出现问题

sql - 计数所有状态和特定状态与分区的数量