【发布时间】:2016-05-28 17:52:38
【问题描述】:
Oracle 数据库中是否有一种方法可以将一定数量的钱分成几个等份的桶,然后使用单个 SELECT 语句确保钱的总和等于初始金额?
也许是聚合函数的一些奇特组合?
例如:我们有 100 美元的金额和 3 个时间桶。我需要查询结果类似于
(33.33, 33.33, 33.34)
所以最后一个值平衡了那里的一切。
示例数据:
- 期间开始数据 01/01/2015
- 期间结束日期 01/01/2016
- 总体积121吨
我需要 SQL 命令在所有月份中输出平均分布的总交易量,所以我在最后得到:
1 月 - 10 日 2 月 - 10 日 ... 11 月 - 10 日 12 月 - 11 日
【问题讨论】:
-
你能提供样本数据和想要的结果吗?
-
请解释逻辑。您需要对存储桶进行 INTEGER 分配吗?您的第一个示例将 100 分为 33.33、33.33 和 33.34,为什么第二个示例不将 121 吨分为 10.08、10.08、...、10.08,最后一个 10.12 来构成 121.00 的总数?为什么这里是整数,而不是第一个例子?那么,假设你真的想要整数——所有的“超额”(额外的东西)应该去最后一个桶,还是均匀地分布在最后几个桶上?如果你有 122 个而不是 121 个,那么 11 个月应该得到 10 个,最后一个 12 个,还是应该前 10 个得到 10 个,最后两个 11 个?