KDB:xgroup的最后记录

KDB:xgroup的最后记录,kdb,Kdb,我有一个表,我使用xgroup按某一列进行分组 `col1 xgroup Tab 然后我在每个字段中都会得到一个列表 col1 aa bb --------------------------------------------------- 654301841 ("DFIDXARB";"DFIDXARB) ("2018";"2018") 529406294 ("DFIDX

我有一个表,我使用xgroup按某一列进行分组

`col1 xgroup Tab
然后我在每个字段中都会得到一个列表

col1       aa                                   bb     
---------------------------------------------------
654301841  ("DFIDXARB";"DFIDXARB)               ("2018";"2018")
529406294  ("DFIDXARB";"DFIDXARB";"DFIDXARC")   ("2018";"2017";"2013")
657471294  ("DFIDVVVB";"DFIDAAAA")              ("2018";"2019")
655649664  ("DFIDVVVR";"DFIDAAAX")              ("")
如何获取最后的值?如下图所示:

col1       aa                                   bb     
---------------------------------------------------
654301841  "DFIDXARB                           "2018"
529406294  "DFIDXARC"                          "2013"
657471294  "DFIDAAAA"                          "2019"
655649664  "DFIDAAAX"                          ""

您需要使用select…by Q-SQL查询

    q) select by col1 from tbl
例如:

    q) t:([]id:1 2 1 2 3;v:1 2 3 4 5;n:`a`b`c`d`e)
    q) select by id rom t

  id| v n
  --| ---
  1 | 3 c
  2 | 4 d
  3 | 5 e

您需要使用select…by Q-SQL查询

    q) select by col1 from tbl
例如:

    q) t:([]id:1 2 1 2 3;v:1 2 3 4 5;n:`a`b`c`d`e)
    q) select by id rom t

  id| v n
  --| ---
  1 | 3 c
  2 | 4 d
  3 | 5 e

另一个好的选择是使用
fby

q)t:([]id:1 2 1 2 3;v:1 2 3 4 5;n:`a`b`c`d`e)
您可以指定第一个或最后一个

q)select from t where i=(first;i)fby id
id v n
------
1  1 a
2  2 b
3  5 e

q)select from t where i=(last;i)fby id
id v n
------
1  3 c
2  4 d
3  5 e
也可以通过索引指定垂直切片

q)select from t where i=(@[;1];i)fby id
id v n
------
1  3 c
2  4 d

另一个好的选择是使用
fby

q)t:([]id:1 2 1 2 3;v:1 2 3 4 5;n:`a`b`c`d`e)
您可以指定第一个或最后一个

q)select from t where i=(first;i)fby id
id v n
------
1  1 a
2  2 b
3  5 e

q)select from t where i=(last;i)fby id
id v n
------
1  3 c
2  4 d
3  5 e
也可以通过索引指定垂直切片

q)select from t where i=(@[;1];i)fby id
id v n
------
1  3 c
2  4 d

与简单的分组方法相比,fby解决方案对于这个特定问题的成本很高,这是因为qsql将这个分组(col的最后一项)视为一个特例,并在内部处理它。但是,对于您提到的按列为特定索引选择行的其他场景,fby很有用(而且通常是正确的方法)。与简单的分组方法相比,fby解决方案对于这个特定问题的成本很高,这是因为qsql将此分组(按列最后一项)视为特殊情况,并在内部处理。但是对于您提到的按列为特定索引选择行的其他场景,fby很有用(而且大多数是正确的方法)。