如何为一组唯一列组合选择kdb表的最后一个元素?

时间:2013-05-29 14:43:55

标签: kdb

我有这个kdb表:

ts              ticker eid          bid     ask
--------------------------------------------------
09:30:00.001    TIF    NASDAQ       781700  792500
09:30:00.001    MRVL   BATSX        114500  118200
09:30:00.001    AVP    BATSX        239100  240100
09:30:00.001    AVP    ARCA         238000  239900
09:30:00.002    TIF    ARCA         780400  790400
09:30:00.002    AVP    BATSX        239100  239800
09:30:00.003    TIF    NYSE         783700  784000
09:30:00.003    TIF    ARCA         783400  790400
09:30:00.004    AVP    NYSE         239300  240000
09:30:00.004    TIF    NASDAQ       783500  792500
09:30:00.006    MRVL   BATSX        114500  117600
..

如何选择每个自动收报机的最后一行,开斋节?对于这个子集:

09:30:00.001    AVP    ARCA         238000  239900
09:30:00.002    AVP    BATSX        239100  239800
09:30:00.003    TIF    NYSE         783700  784000
09:30:00.003    TIF    ARCA         783400  790400
09:30:00.004    AVP    NYSE         239300  240000
09:30:00.004    TIF    NASDAQ       783500  792500
09:30:00.006    MRVL   BATSX        114500  117600

3 个答案:

答案 0 :(得分:4)

默认不选择列列表:

select by ticker,eid form t

答案 1 :(得分:2)

以下内容应该是您正在寻找的内容:

q)select from tbl where i=(last;i) fby ([]ticker;eid)

答案 2 :(得分:1)

您可以聚合多个字段。

select count i by ticker, eid from t

select last ts, last bid, last ask by ticker, eid from t

您需要对列重新排序以与输出完全匹配,但这很简单。