You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KDB+中按复合分组选取每组首行的简洁实现方法

KDB+按复合分组取每组第一行的简洁写法

针对多列场景,有两种简洁写法可以避免逐个列名编写first col:

方法一:使用select first each *

直接用*指代所有非分组列,配合first each一次性对所有列取每组第一行:

q) t:([]name:`c`c`c`w`w;id:1 1 1 2 1;c:2 4 5 4 3;d:10 20 30 40 50)  // 新增d列示例
q) select first each * by name,id from t
name id c  d
-----------
c    1  2  10
w    2  4  40
w    1  3  50

方法二:利用group函数结合first each

先按name和id分组得到每组的行索引,再取每组第一行并转成表:

q) 0!first each group[`name`id; t]
name id c  d
-----------
c    1  2  10
w    2  4  40
w    1  3  50

这里0!的作用是将字典结果转换为表格式。

内容的提问来源于stack exchange,提问作者marital_weeping

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:42:08