dolphindb关于取一个表前5%记录的均值,这个有什么优化的写法

如果要取一个表前5%记录的均值,这个有什么优化的写法么?
比如按照trademoney字段排序,取前5%的均值,最小值和标准差
假设每个股票分组计算,~~~~有这两列SecurityID,TradeMoney,5天的l2数据,大概3000多w

阅读 1.9k
1 个回答

如果按照股票分组SecurityID去计算循环,会比较慢。
可以参照以下写法:

SecurityId = `C`MS`MS`MS`IBM`IBM`C`C`C$SYMBOL
date = 2012.06.01 2012.06.01 2012.06.02 2012.06.03 2012.06.01 2012.06.02 2012.06.02 2012.06.03 2012.06.04
tradeMoney = 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
t = table(SecurityId,date,tradeMoney)
filter = select percentile(tradeMoney, 95) as min, max(tradeMoney)  as max from t group by SecurityId//每只股票前5%的范围
filterMap = dict(filter.SecurityId, each(pair, filter.min, filter.max))//字典形式表示每只股票的查询范围
select avg(tradeMoney),std(tradeMoney), min(tradeMoney) from t where conditionalFilter(tradeMoney, SecurityId, filterMap) group by SecurityId
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
101 新手上路
子站问答
访问
宣传栏