KDB 从每组中选择第一行
KDB selecting first row from each group
非常愚蠢的问题...考虑下面的 table t1,它按 sym 排序。
t1:([]sym:(3#`A),(2#`B),(4#`C);val:10 40 12 50 58 75 22 103 108)
sym val
A 10
A 40
A 12
B 50
B 58
C 75
C 22
C 103
C 108
我想select每个sym对应的第一行,像这样:
(`sym`val)!(`A`B`C;10j, 50j, 75j)
sym val
A 10
B 50
C 75
必须有一条线才能做到这一点。要获取每个 sym 的最后一行,就像 select by sym from t1
一样简单。有什么提示吗?
select first val by sym from t1
或者对于多列,您可以反转 table 和 运行 您的查询:
select by sym from reverse t1
你可以使用 fby
q)select from t1 where i=(first;i) fby sym
sym val
-------
A 10
B 50
C 75
非常愚蠢的问题...考虑下面的 table t1,它按 sym 排序。
t1:([]sym:(3#`A),(2#`B),(4#`C);val:10 40 12 50 58 75 22 103 108)
sym val
A 10
A 40
A 12
B 50
B 58
C 75
C 22
C 103
C 108
我想select每个sym对应的第一行,像这样:
(`sym`val)!(`A`B`C;10j, 50j, 75j)
sym val
A 10
B 50
C 75
必须有一条线才能做到这一点。要获取每个 sym 的最后一行,就像 select by sym from t1
一样简单。有什么提示吗?
select first val by sym from t1
或者对于多列,您可以反转 table 和 运行 您的查询:
select by sym from reverse t1
你可以使用 fby
q)select from t1 where i=(first;i) fby sym
sym val
-------
A 10
B 50
C 75