请教一句sql,加班中,在线等

WWWDJ1983 2011-03-09 05:33:29
比如有个表里有1000条数据 表名aa , 两个字段(账号,余额)

我现在要随机得到其中的N条数据,要求是这N条数据的余额相加差不多等于10000元

最好是一句SELECT能搞定,如果不行,那换个简单点的:

我现在要得到前N条数据,要求是这N条数据的余额相加差不多等于10000元


坐等高人~~~
...全文
236 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
无爱大叔 2011-03-09
  • 打赏
  • 举报
回复
必须限定一个范围如9000-11000之间的余额为成功取出的
我想的办法比较笨:
第一次随机取一条数据a,判断是否在 9000-11000之间,如果不满足则
第二次随机取一条数据b,与a相加继续判断是否在此区间,如此类推,直到满足。
再随机取数据时要判断已取过的数据不能再取,此法效率比较低,但是成功率比较高。

第二个办法每次随机取10-20条(具体范围根据余额大小而定),相加,不成功则继续取,直到成功。
此法容易造成死循环,即表里没有满足条件的数据,所以慎用。
zcxverygood123456 2011-03-09
  • 打赏
  • 举报
回复
要求是这N条数据的余额相加差不多等于10000元
=========================
用循环来做 ,
从数据库取出一条,差不多等于10000元(是不是应该为9999到10000元之间)
==================
我现在要得到前N条数据,
---------------
然后有随机抽取,不知想得到什么结果?
有1000条数据,也许余款都是1万元,那么是不是有1000个结果
如果有1000条数据,余额都为1毛钱,那又是什么结果呢?
showenxxx 2011-03-09
  • 打赏
  • 举报
回复
根据楼主要求感觉只能循环做,一行一行的加总额超过1000 break
然后返回这些个数据
WWWDJ1983 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shine_fly 的回复:]
SQL code
declare
type num_type is table of number;
num_arr num_type:=num_type();
n number:=0;
x number := 100;
begin
-- 循环处理20个数---------------------数自己改------------------------------……
[/Quote]


小弟,存储过程不行,能否换个db2中能执行的看看
jeje 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shine_fly 的回复:]
SQL code
declare
type num_type is table of number;
num_arr num_type:=num_type();
n number:=0;
x number := 100;
begin
-- 循环处理20个数---------------------数自己改------------------------------……
[/Quote]
这个还不错LZ试一下
shine_fly 2011-03-09
  • 打赏
  • 举报
回复
declare
type num_type is table of number;
num_arr num_type:=num_type();
n number:=0;
x number := 100;
begin
-- 循环处理20个数---------------------数自己改-------------------------------------------------------
for i in 1 ..20 loop
-- 扩展数组
num_arr.extend;
-- 如果是最后一个数,则不需要随机(因为和为100,所以只能随机19个数)
if i = 20 then
num_arr(i) := x;
-- 前19个数进行随机生成,因为要给后面的数保留值,所以只能在x - (20 -i) * 2中取值
else
select round(dbms_random.value(1,x - (20 - i)*2)) into num_arr(i) from dual;
end if;
-- 计算剩余的可取值范围
x := x - num_arr(i);
-- 输出显示
dbms_output.put_line(i||' '||num_arr(i));
end loop;

end;
OOAmyOO 2011-03-09
  • 打赏
  • 举报
回复
定义一个@sum去累加每条数据的余额,对@sum进行判断
jiangshun 2011-03-09
  • 打赏
  • 举报
回复
我也想知道一条语句怎么写

楼主搜一下“背包”
sxiaohui8709253 2011-03-09
  • 打赏
  • 举报
回复
一条语句搞不定
随机去100个数字并求和

user master
select sum(number) from(select top 100 number from spt_values where type='p' order by newid())t

WWWDJ1983 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fengyarongaa 的回复:]
需要存储过程

一条SQL我搞不定
[/Quote]

这位大哥,你写个简易的存储过程
我看一下
ycproc 2011-03-09
  • 打赏
  • 举报
回复
需要存储过程

一条SQL我搞不定
WWWDJ1983 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiao0326 的回复:]
是每条数据的余额,还是这N条数据的总余额(余额),,
[/Quote]

这N条数据相加的总余额
油泼白菜 2011-03-09
  • 打赏
  • 举报
回复
是每条数据的余额,还是这N条数据的总余额(余额),,

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧