KDB 从每组中选择第一行

big*_*377 3 select kdb

非常愚蠢的问题......考虑下面按 sym 排序的表 t1。

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
Run Code Online (Sandbox Code Playgroud)

我想选择与每个符号对应的第一行,如下所示:

(`sym`val)!(`A`B`C;10j, 50j, 75j)

sym val
A   10
B   50
C   75
Run Code Online (Sandbox Code Playgroud)

必须有一个单线来做到这一点。要获取每个符号的最后一行,就像select by sym from t1. 任何提示?

小智 5

select first val by sym from t1
Run Code Online (Sandbox Code Playgroud)

或者对于多列,您可以反转表并运行您的查询:

select by sym from reverse t1
Run Code Online (Sandbox Code Playgroud)


use*_*050 5

你可以使用fby

q)select from t1 where i=(first;i) fby sym
sym val
-------
A   10 
B   50 
C   75 
Run Code Online (Sandbox Code Playgroud)