计算最大组合为“x”的数字列表的最大值

时间:2016-02-12 00:03:04

标签: mysql sql math

好吧,我不确定我是否可以解释这一点。 假设我有一个包含三列的表(id,price,maxcombo)

  1. 这个表中可能有5行,价格随机数。 2. id只是增量唯一键)
  2. maxcombo指定该价格是否可以是任何数字的组合。
  3. 如果x为3,我需要找到总和1-3列的最大值的组合。

    所以说桌子有:

    1 - 100 - 1
    2 - 50 - 3
    3 - 10 - 3
    4 - 15 - 3
    5 - 20 - 2

    正确答案只是行id 1。

    单独100(并且只能基于maxcombo数单独) 大于50 + 20 + 15或20 + 15或10 + 20等。

    这有意义吗?

    我的意思是我可以只计算所有的差异组合并查看哪个具有最大值,但我想如果表格大于5行则需要很长时间。

    想知道任何数学天才或超级开发者都有一些建议或创造性的方式来更有效地解决这个问题。

    提前致谢!

1 个答案:

答案 0 :(得分:0)

我构建了此解决方案以实现所需的查询。但是,它还没有在效率方面进行过测试。

以colums 1-3为例:

SELECT max(a+b+c) FROM sample_table WHERE a < 3;

编辑:

看着:

  

正确答案将是行ID 1

...我认为也许我误解了你的问题,你希望查询只获得rowid。所以,我做了另一个:

SELECT a FROM sum_combo WHERE a+b+c=(
    SELECT max(a+b+c) FROM sum_combo WHERE a > 3
);

在大型表格中确实需要花费的时间太长而不仅仅是5行。