按列值限制结果集中的行数

时间:2016-10-06 19:25:22

标签: java hibernate

此问题涉及在以下情况下在Hibernate中构建正确的Criteria

假设我从这样的表开始:

id ts metric   value carrier
1  1  distance 4     alice
2  1  count    2     alice
3  2  distance 3     alice
4  2  count    1     alice
5  1  distance 3     becky
6  1  count    2     becky
7  2  distance 4     becky   
8  2  count    1     becky
9  1  distance 10    other
10 1  count    10    other
11 2  distance 10    other
12 2  distance 10    other

这是一组时间分布的衡量标准,用于记录alicebecky和一般other携带countdistance的距离{{1} }。

我想以下列方式进行推广:使用'其他'或者“赢家”#39;由每个时间段保留distance决定。因此,上表将产生以下结果集:

id ts metric   value carrier
1  1  distance 4     alice
2  1  count    2     alice
7  2  distance 4     becky   
8  2  count    1     becky
9  1  distance 10    other
10 1  count    10    other
11 2  distance 10    other
12 2  distance 10    other

最终将其转化为:

ts carrier distance count
1  alice   4        2
1  other   10       10
2  becky   4        1
2  other   10       10

但是这个翻译我已经明白了怎么做。我不清楚的是如何制定标准以保持最佳状态。指标。这让我们感到皱纹:虽然简化了这个例子,但会有大量的“运营商”,而我感兴趣的是这些运营商的顶级n,丢弃其余的部分。因此,在上面的示例中n = 1,但在大多数情况下它可能大于1

我知道我可以使用addOrder(Order.desc("value"),但这会带来一个问题,即other混合了距离,并且计数会被错误地混合在一起。我正在寻找能够解决问题的问题。由ts按顺序决定的行,然后是carrier,然后使用metric = "distance"作为排序顺序。

0 个答案:

没有答案