KDB: агрегировать по последовательным строкам с общей меткой

Я хотел бы суммировать по последовательным строкам, которые имеют одну и ту же метку. Любые очень простые способы сделать это?

Пример: я начинаю с этой таблицы...

qty flag
1 OFF
3 ON
2 ON
2 OFF
9 OFF
4 ON

... и хотел бы сгенерировать...

qty flag
1 OFF
5 ON
11 OFF
4 ON

person bigO6377    schedule 18.07.2014    source источник


Ответы (1)


Один метод:

q)show t:flip`qty`flag!(1 3 2 2 9 4;`OFF`ON`ON`OFF`OFF`ON)
    qty flag
    --------
    1   OFF 
    3   ON  
    2   ON  
    2   OFF 
    9   OFF 
    4   ON  

q)show result:select sum qty by d:sums differ flag,flag from t
    d    flag1| qty
    ----------| ---
    1    OFF  | 1  
    2    ON   | 5  
    3    OFF  | 11 
    4    ON   | 4  

Затем, чтобы получить его в нужном вам формате:

q)`qty`flag#0!result
    qty flag
    --------
    1   OFF 
    5   ON  
    11  OFF 
    4   ON  
person MdSalih    schedule 19.07.2014