Select KDB从每个组中选择第一行
非常愚蠢的问题。。。考虑下面的表T1,它由Sym排序。Select KDB从每个组中选择第一行,select,kdb,Select,Kdb,非常愚蠢的问题。。。考虑下面的表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 我想选择每个sym对应的第一行,如下所示: (`sym`val)!(`A`B`C;10j, 50j, 75j) sym val A 10 B 50 C
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
我想选择每个sym对应的第一行,如下所示:
(`sym`val)!(`A`B`C;10j, 50j, 75j)
sym val
A 10
B 50
C 75
要做到这一点,必须有一艘客轮。要获取每个sym的最后一行,只需从t1中选择sym即可。有什么提示吗
select first val by sym from t1
或者,对于多列,可以反转表并运行查询:
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
这很有效。但是你能解释一下为什么我们必须反转
t1
?这就是KDB从下到上读取数据的方式吗?