如何从问题表中选择30个问题,条件总和应为120

时间:2013-05-23 09:50:02

标签: eclipse sqlite

我的表格包含

等列

questions

现在我的要求是获取30个随机问题,并且标记的总数应为120。

我知道如何获取30个随机问题,即使用以下查询:

通过随机限制30从问题顺序中选择*

我也知道如何找到标记列的总和,即使用以下查询:

从问题中选择总和(标记)

但我仍然坚持如何检查条件,即我带来的30个随机问题是标记栏总数为120的那些。

2 个答案:

答案 0 :(得分:0)

我想到解决这个问题的一种方法(没有进入递归或循环直到得到正确的总数)是如果你知道标记的扩散,你可以拉出随机列表中的每一个的设定数量。

EG。 (标记* n)+(标记* n)+(标记* n)= 120又名(4 * 20)+(5 * 8)= 120标记

并在SQL中:

select * from
(
    select * from questions where marks = 4 order by random limit 20
        union all
    select * from questions where marks = 5 order by random limit 8
) a

我想你甚至可以推导出一个数学公式来随机化传播,给你一个真正的随机选择。

希望这有帮助。

保罗P

答案 1 :(得分:0)

您的问题是knapsack problem(所有对象的权重和值相等)。

在SQL中几乎不可能解决它;您应该只阅读所有问号并在代码中实现solution