如何按sym分组跳过每组前252行,现有写法报错原因是什么?
问题原因
你的写法存在2个核心问题:
- q语言没有
[数字]_select这种内置语法,直接在select关键字前加行数前缀不符合语法规则,这是语句报错的直接原因。 - 你没有正确指定分组内的行过滤逻辑,分组后对每个sym的子集取数需要在
select的子句或条件中定义。
正确实现写法
你要实现每个sym分组跳过前252行、保留原表结构的需求,可以用下面两种写法:
写法1:用行索引过滤
ungroup select from t where i >= 252 by sym from t
写法2:用drop操作符过滤
ungroup select 252 _ x by sym from t
补充说明
- 如果部分sym对应的分组行数不足252行,上述写法会自动过滤掉该sym的所有记录。如果需要保留这类sym的全部数据,可以调整过滤条件为:
ungroup select from t where i >= min(252; count i) by sym from t - 因为原表已经设置了sym-date联合索引,按sym分组后ungroup返回的结果会保持原表的排序规则,不会破坏原表结构。
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

