关于从表中按要求随机抽取数据的问题 有一张表T,其中有N条记录,每条记录两个值A和B,A是序号,B是整数值,现在从其中抽取n条记录(n<N),使得这n条记录的值的总和等于一个值M(一个定值),请帮助实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 N n M这些都是定值吗? 做是不想做了。给一个思路?也不知道你的序号是不是连号。我们先作为不连号来做。用dbms_random来取得一个随机号码。然后当成行数来取得。假如这一次的N,还用不到很大位数的话,可以用select round(DBMS_RANDOM.VALUE(1,N),0) from dual这样的方式。然后就是M的问题了。我们认为,可以存在这样的规则,只是随机N-1条,然后,用M减去之前的N-1的纪录的和,我们认为这个差是T,去数据库检索等于T的纪录就可以了。不能存在的话,可以重新来过。(或者退到N-2的纪录来过。不过,我觉得重新来过合理一些。)当然,抽取对象是用在行数上,还是表里面的序号,还是表里面的值。都是可以的。只是一个思路。当然全部抽取也可以得到M,就是几率很低。赫赫。 急!! 动态SQL问题 create view 权限 SQL语句小问题 再次触发器 关于时间比较的问题 oracle 的 jobs 问题?跪求! 请问大家一个百思不得其解的问题? 请教rownum问题,为何不支持>,>=,=,between...and 未说明结合变量,奇怪的问题 高手帮忙,错误在哪? ORACLE中关于查看会话信息的问题 update时如何实现两行的自动相加
用dbms_random来取得一个随机号码。然后当成行数来取得。假如这一次的N,还用不到很大位数的话,可以用select round(DBMS_RANDOM.VALUE(1,N),0) from dual这样的方式。然后就是M的问题了。
我们认为,可以存在这样的规则,
只是随机N-1条,然后,用M减去之前的N-1的纪录的和,我们认为这个差是T,去数据库检索等于T的纪录就可以了。
不能存在的话,可以重新来过。(或者退到N-2的纪录来过。不过,我觉得重新来过合理一些。)当然,抽取对象是用在行数上,还是表里面的序号,还是表里面的值。都是可以的。只是一个思路。当然全部抽取也可以得到M,就是几率很低。赫赫。