【发布时间】:2014-11-04 01:53:27
【问题描述】:
我有一个简单的表,其中包含我想根据这些值的总和(不超过某个限制组总和)将其分块/分区为不同组的值。
例如,。想象一个像下面这样的表格:
Key Value
-----------
A 1
B 4
C 2
D 2
E 5
F 1
我想分组,这样任何一个分组的总和都不会超过某个给定值(比如 5)。
结果会是这样的:
Group Key Value
-------------------
1 A 1
B 4
--------
Total: 5
2 C 2
D 2
--------
Total: 4
3 E 5
--------
Total: 5
4 F 1
--------
Total: 1
这样的查询可能吗?
【问题讨论】:
-
@user545242 - 这是一个应该由报告引擎解决或输出到 Excel 并启用 Excel 的小计功能的问题。这不是您应该尝试在数据库中解决的问题类型。
-
@Thomas - 我不同意:不熟悉的问题(或问题集)并不意味着 sql 引擎不应该这样做。考虑到允许一些约束等,很有可能有一个解决方案。
-
@topchef - 我们同意不同意。这个问题完全是关于演示的。 SQL 语言面向集合的检索。我们可以使用查询来获取总计集。我们可以使用查询来获取单个金额的集合。试图像在 OP 中那样很好地显示小计就是为了报告。即使您可以生成一个返回这些结果的查询,数据层代码也会阻塞它。正确的答案是提取原始数据并使用报告工具。
-
我认为我将不得不在脚本/报告工具中处理原始数据,但要求与演示无关(尽管我上面的格式很愚蠢)。我只需要按顺序对这些值进行分组——这与容量有关。我有一系列具有给定成本(价值)的作业和一系列容量有限的引擎/存储桶,需要如上所述将作业分散开。感谢迄今为止所有的 cmets。
-
@user545242 - 是否只是您想要输出中的小计但未按所示格式化?如果是这样,那可能是可能的。
标签: sql