gpt4 book ai didi

Rethinkdb 在一个查询中执行多个 avg

转载 作者:行者123 更新时间:2023-12-03 09:32:33 28 4
gpt4 key购买 nike

我有一个包含多个数字列的评论表。我想计算一个查询中所有列的平均值。

如果表格看起来像这样:

{ 
foo : 2,
bar : 5,
foobar : 10
},
{
foo : 4,
bar : 3,
foobar : 12
}

然后我想在一个查询中获取每一列的平均值。我知道我能做到:

r.table('stats' ).avg( 'foo' )

在每一列上,但我想只在一个查询中执行此操作并映射到一个对象中。

关于如何做到这一点有什么想法吗?

最佳答案

您可以使用 mapreduce (如果表中的每条记录都包含所有 3 个字段):

r.table("stats").map(function(row){
return {foo : row("foo"), bar : row("bar") , foobar : row("foobar"), count : 1};
}).reduce(function(left, right){
return {foo : left("foo").add(right("foo")), bar : left("bar").add(right("bar")), foobar : left("foobar").add(right("foobar")), count : left("count").add(right("count"))};
}).do(function (res) {
return {
foo: res('foo').div(res("count")),
bar: res('bar').div(res("count")),
foobar: res('foobar').div(res("count"))
};
})

如果record不能有所有字段,可以在map操作中对每个字段单独count,然后在do中根据情况使用在场上。

关于Rethinkdb 在一个查询中执行多个 avg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40687817/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com