javascript - 如何对 RethinkDB 中的过滤组执行映射缩减?

标签 javascript sql rethinkdb reql

我有一个由 Robinhood 股票订单组成的 RethinkDB 表。相关字段是:

(买入卖出)
state(我只寻找已成交订单)
价格(订单的平均美元价格)
数量(出售或购买的股票数量)

我只是想了解我的订单历史记录中每只股票的历史损益。

我有以下工作查询,它​​告诉我所有卖出订单的价格,按股票代码分组:

r.db('robinhood').table('orders').filter({side: 'sell', state: 'filled'})
 .map(function(order) { 
   return {
     cost: (order('price').coerceTo('number')).mul(order('quantity').coerceTo('number')),
     symbol: order('symbol')
   }
}).group('symbol').sum('cost')

这会返回类似这样的内容:

[{"group":"AA","reduction":491},{"group":"AAPL","reduction":10589},{"group":"ABEO","reduction":7596.16},...]

显然,我可以对 BUY 端执行相同的查询,这将告诉我所有采购订单的总成本(然后,理论上,我可以从每个采购订单中减去该成本)之前的SELL 值)。

简而言之,如何从每个股票代码的 SELL 订单的总值(value)中减去每个股票代码的 BUY 订单的总值(value),使用一个 ReQL 查询?

感谢您的宝贵时间。

最佳答案

您可以尝试将买入订单的倒数添加到您的总和中:

r.db('robinhood').table('orders').filter({state: 'filled'})
 .map(function(order) { 
   return {
     cost: order('price').coerceTo('number')
           .mul(order('quantity').coerceTo('number'))
           .mul(r.branch(order('side').eq('sell'), 1, -1)),
     symbol: order('symbol')
   }
}).group('symbol').sum('cost') 

关于javascript - 如何对 RethinkDB 中的过滤组执行映射缩减?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816206/

相关文章:

javascript - 文档边栏中的元素不会自动激活

javascript - 在codeigniter中通过ajax删除后隐藏数据表的行(tr)

javascript - AngularJS 不显示 API 数据

MySQL - 在另一个子查询中使用子查询结果

python - 在 Python/Pandas/PostgreSQL 中将表名作为函数参数传递

Rethinkdb 可扩展性

c++ - 为 Raspberry Pi 交叉编译 rethinkdb

javascript - Bootstrap 卡不能一直 flex 到全宽

docker - Rethinkdb SIGTERM,关闭

sql - 使用一组整数作为 SQL 键的最佳方法?