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

如何在kdb/q中按Primary分组取Count最大值的单条记录?

解决kdb/q按分组取Count最大值记录的问题

你写的Count xdesc by Primary from tb触发语法错误,是因为不符合kdb/q的查询语法结构——by分组子句需要结合select语句使用,不能直接这样拼接。下面提供几种可行的实现方式:

方法1:使用fby(分组内函数)筛选(推荐)

这是最简洁直观的方式,直接筛选出每组中Count等于该组最大值的记录:

select from tb where Count = max[Count] fby Primary

如果同一分组内有多个Count同为最大值的记录,上面的语句会返回所有符合的记录。如果需要每组只保留一条(比如第一条),可以调整为:

select first Name, first Count by Primary from tb where Count = max[Count] fby Primary

方法2:分组后排序取首/尾记录

先对全表按Primary分组,每组内按Count降序排列,再取每组的第一条记录(降序后第一条就是最大值):

select first each flip xdesc[`Count] by Primary from tb

或者用last配合升序排序(升序后最后一条是最大值),效果一致:

select last each flip asc[`Count] by Primary from tb

验证结果

针对你定义的表:

tb: ([] Primary:`1a`1a`1a`1a`2e`2e`2e`2e; Name:`AXA`FLO`FLO`AXA`AXA`ROT`ROT`ROT; Count: 11 1 60 14 1 1 6 4)

执行上述方法后会得到预期结果:

Primary Name Count
------------------
`1a     FLO  60
`2e     ROT  6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:58:17