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

如何基于x列最大值筛选每个sym的唯一记录?

在kdb+中为每个sym保留x列最大值对应的完整记录

假设你已经通过以下查询得到了分组计数后的表t:

t:select count i by sym, typ from tbl;

要实现每个sym仅保留x列最大值对应的记录,有几种简洁的实现方式:

方法1:使用fby窗口函数(推荐)

fby是kdb+中用于分组计算的窗口函数,直接筛选出每个sym分组内x等于最大值的记录:

select from t where x=fby(max;x;sym)

这个语句会遍历表,对每个sym分组计算x的最大值,然后保留x等于该最大值的行,正好满足需求。

方法2:使用argmax和分组索引

argmax返回数组中最大值的索引,结合by分组可以定位到每个sym分组内x最大的行:

select from t where i=argmax x by sym

这里argmax x by sym会为每个sym分组计算x最大值对应的行索引i,然后筛选出这些索引对应的记录。

方法3:分组后关联最大值对应记录

先按sym分组,对每组内的typ和x,通过max和first关联对应关系(适用于每组x最大值唯一的场景):

select first typ, max x by sym from t

这种方式会直接按sym分组,取每组的最大x,同时取该x对应的typ,和你的需求场景匹配。

执行上述任意一种方法后,都会得到你期望的结果:

| sym | typ |  x  |
-------------------
| ABC |  A  | 122 |
| JKL |  C  |  19 |
| XYZ |  B  | 206 |
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:03:10