【发布时间】:2011-08-29 21:21:53
【问题描述】:
在 Oracle 中,我有一张记录用户事务的表,如下所示。目标查询不需要用户列,请在此处列出以供参考。
user1, transaction1, $10 <-row1
user1, transaction2, $20 <-row2
user1, transaction3, $5 <-row3
user1, transaction4, $100 <-row4
user2, ... ...
user3, ... ...
对于给定的用户,会有一个资金上限,我需要找出资金总额 >= 给定资金上限的最小行,或者如果资金上限大于该用户的所有行和。返回的行必须按事务升序排序。
例如,对于 user1,给定的资金上限是 30 美元。然后必须返回 row1 和 row2。您不能退回第 4 行,因为我们必须遵循交易顺序。如果给定的上限是 13 美元,则必须返回第 1 行和第 2 行,因为第 1 行不足以支付 13 美元。如果给定的上限为 $136,则返回 row1/2/3/4,因为 $10+$20+$5+$100 小于 $136。
使用游标我们可以使用存储过程来解决这个问题,但是我找不到一种优雅的方式来使用一些嵌套查询和 sum 来实现这一点。非常感谢您的帮助!
【问题讨论】:
-
资金上限是否因用户而异?还是在整个查询中保持一致?你愿意使用 R 之类的东西吗?我可以看到这是 R 中的一个单行...
-
是的,资金上限因用户而异。不幸的是,我必须使用 Oracle SQL。你介意发布 R 语言中的 1 线性吗?
-
如果上限因用户而异,该信息(上限)存储在哪里?