哈希聚合函数
哈希聚合 Java 序列迭代器方法接受各种输入参数,并为分组值和组聚合返回一个 GroupByResult 结果。然后可以通过调用 GroupByResult 的 getIterator() 方法将其转换为序列迭代器。完成后,应调用 GroupByResult 方法 close() 以释放内部资源。
GroupByResult hashAggCount(int nGroups):返回一个序列,其中包含每个组中元素的数量。
GroupByResult hashAggMax(SequenceIterator groupBy, int nGroups):返回一个序列,其中包含每个组元素的最大值。
GroupByResult hashAggMin(SequenceIterator groupBy, int nGroups):返回一个相同类型的序列,其中包含每个组元素的最小值。
GroupByResult hashAggSum(SequenceIterator groupBy, int nGroups):返回一个相同类型的序列,其中包含每个组元素的总和。
GroupByResult hashAggAvg(SequenceIterator groupBy, int nGroups):返回一个序列,其中包含每个组元素的平均值。
GroupByResult hashAggApproxdc(SequenceIterator groupBy, int nGroups):返回一个序列,其中包含每个组元素的大致分布计数。
GroupByResult hashAggDistinctCount(SequenceIterator groupBy, int nGroups, int nPairs):返回一个序列,其中包含每个组中不同元素的数量。
GroupByResult hashAggDupCount(SequenceIterator groupBy, int nGroups, int nPairs, int minOccurrences):返回一个序列,其中包含每个组中重复元素的数量。参数 minOccurrences 指定了特定值出现次数的最小值,该值才会被计入。当 minOccurrences = 1 时,此方法等同于 hashAggDistinctCount();当 minOccurrences = 2 时,它会统计出现次数超过一次的项。
示例
以下是一个示例代码片段,演示了如何使用哈希聚合方法来计算成交量值在 0..9、10..19、20..29 等区间内的收盘价平均值:
public static void hashAggregate(Connection con)
{
con.startTransaction(Database.TransactionType.ReadOnly);
Cursor<Quote> cursor = new Cursor<Quote>(con, Quote.class, "symbol");
for (Quote quote : cursor)
{
SequenceIterator ranges = SequenceIterator.constant(10, Sequence.Type.UInt4);
SequenceIterator volRanges = quote.volume.iterator().div(ranges);
GroupByResult result = quote.close.iterator().hashAggAvg(volRanges, 0);
SequenceIterator avg = result.getAggIterator();
result.close();
...
}
con.commitTransaction();
}