窗口聚合函数
哈希聚合方法接受各种输入参数,并返回两个迭代器:一个用于分组值,另一个用于组聚合值。
hash_agg_max
hash_agg_max( ... )
返回与输入序列类型相同的序列,其中包含每个元素组的最大值
hash_agg_min
hash_agg_min( ... )
返回与输入序列类型相同的序列,其中包含每个元素组的最小值
hash_agg_sum
hash_agg_sum( ... )
返回与输入序列类型相同的序列,其中包含每个元素组的总和
hash_agg_avg
hash_agg_avg( ... )
返回一个双精度结果序列,其中包含每个元素组的平均值
hash_agg_approxdc
hash_agg_approxdc( ... )
返回一个 uint4 结果序列,其中包含每个元素组的大致分布计数
hash_agg_count
hash_agg_count( ... )
返回一个 uint8 结果计数序列,其中包含每个元素组中元素的数量
hash_agg_distinct_count
hash_agg_distinct_count( ... )
返回一个 uint8 结果计数序列,其中包含每个元素组中不同元素的数量
hash_agg_dup_count
hash_agg_dup_count()
返回一个 uint8 序列,其中包含每个元素组中重复元素的数量。参数 min_occurrences 指定特定值出现次数的最小值,以被计入。当 min_occurrences = 1 时,此函数等同于 mco_seq_hash_agg_distinct_count(),当 min_occurrences = 2 时,它会计算出现次数超过一次的项目...如果 n_pairs 参数为 0,则 mco_seq_hash_init_size 用于指定哈希表的大小,并且当达到由 mco_seq_hash_load_factor 确定的阈值时,它会自动扩展。
示例
以下是一个示例代码片段,演示了如何使用哈希聚合函数来计算成交量值在 0..9、10..19、20..29 等区间内的平均收盘价:
{
mco_trans_h trans;
mco_cursor_t quote_cursor;
Quote quote;
mco_seq_iterator_t close_iterator, volume_div_10_iterator;
mco_seq_iterator_t group_iterator, avg_iterator;
MCO_RET rc;
...
for (rc = mco_cursor_first(trans, "e_cursor);
rc != MCO_S_CURSOR_END;
rc = mco_cursor_next(trans, "e_cursor))
{
Quote_from_cursor(trans, "e_cursor, "e);
Quote_close_iterator("e, &close_iterator);
Quote_volume_iterator("e, &volume_iterator);
rc = mco_seq_const_uint4(&const_iterator, 10));
rc = mco_seq_div_uint4(&volume_div_10_iterator, &volume_iterator, &const_iterator);
rc = mco_seq_hash_agg_avg_float(&avg_iterator, &group_iterator,
&close_iterator, &volume_div_10_iterator, 0);
...
mco_seq_free_hash(&avg_iterator);
}
...
}