关于提取固定累计数据的语句

s198127 2006-04-13 11:54:21
现在有如下的数据:
姓名 金额
A 1
B 2
C 3
D 4
E 5
F 6
G 7
H 8
I 9

现在已经将数据按照"金额"进行了升序排列,
我期望能提取出总金额为:10 并且包含的人员人数最多的组合.
结果如下:
姓名 金额
A 1
B 2
C 3
D 4

附加说明:
1.由于数据量非常的巨大.不能使用游标的方式来逐条的处理;
2.总金额10不是一个确定的数值.而是根据传入的参数确定的,所以事先无法预定;
3.选定的人数累计总金额可以不完全等于总金额10,可以存在一定范围内的误差;
4.希望用最少的SQL完成该工作;

问题描述完结.
期待各位的答案中........
...全文
308 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhchih 2006-07-03
  • 打赏
  • 举报
回复
期待中......
hrui99 2006-05-07
  • 打赏
  • 举报
回复
我的理解:
1.由于数据量非常的巨大.不能使用游标的方式来逐条的处理;
至少单个用户的金额要小于10的用户群能用游标获得吧?
2.总金额10不是一个确定的数值.而是根据传入的参数确定的,所以事先无法预定;
这说明只能通过游标加条件获得用户
3.选定的人数累计总金额可以不完全等于总金额10,可以存在一定范围内的误差;
这说明至少四舍五入是10
回答:
下面就是写一个算法了:
因为已经排序所以,先取小于等于(10)/2一半(前一半)的用户金额求和:看是否否满足条件;
如果小或等于;加(后一半)的第一个用户的金额看是否还满足条件;持续加到不满足并累计用户数,就是最大组合用户数,
如果大于;减(前一半)的第一个用户看是否满足,持续减到满足并累计用户数;就是最大组合用户数。
抱歉代码就不写了,只要思路不错就能行的通。
Visual_Studio_Net 2006-05-05
  • 打赏
  • 举报
回复
还是没明白你的描述
总金额为10是什么意思?某些人员的和还是金额那一列为10
hunterzhao 2006-05-05
  • 打赏
  • 举报
回复
我期望能提取出总金额为:10 并且包含的人员人数最多的组合.
结果如下:

如上的表述有点不明白
s198127 2006-04-25
  • 打赏
  • 举报
回复
汗........都放这么久了..咋都没人帮回复一个啊...郁闷并期待中......

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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