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