The Hash Aggregate Java SequenceIterator methods take various input arguments and return a GroupByResult result for the grouping values and groups for the group aggregates. The GroupByResult can then be converted to a SequenceIterator by calling its getIterator()
method. When finished, the GroupByResult method close()
should be called to release internal resources.
GroupByResult hashAggCount(int nGroups) Returns a sequence with the count of the number of elements in each group GroupByResult hashAggMax(SequenceIterator groupBy, int nGroups) Returns a sequence with the maximum value for each group of elements GroupByResult hashAggMin(SequenceIterator groupBy, int nGroups) Returns a sequence of the same type with the minimum value for each group of elements GroupByResult hashAggSum(SequenceIterator groupBy, int nGroups) Returns a sequence of the same type with the sum of each group of elements GroupByResult hashAggAvg(SequenceIterator groupBy, int nGroups) Returns a sequence with the average of each group of elements GroupByResult hashAggApproxdc(SequenceIterator groupBy, int nGroups) Returns a sequence with the approximate district count for each group of elements GroupByResult hashAggDistinctCount(SequenceIterator groupBy, int nGroups, int nPairs) Returns a sequence with the count of the number of distinct elements in each group GroupByResult hashAggDupCount(SequenceIterator groupBy, int nGroups, int nPairs, int minOccurrences)
Returns a sequence with the count of duplicates in each group. Parameter
minOccurrences
specifies minimum number for occurrences of a particular value to be counted. WithminOccurrences=1
this method is equivalent tohashAggDistinctCount()
, withminOccurrences=2
it counts items encountered more than once.Example
Following is an example code snippet demonstrating use of a hash aggregate method to calculate the average Close price for Volume values in ranges of 0..9, 10..19, 20..29, etc.:
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(); }