kdb 从整数除法中获取浮点数

kdb getting float from integer division

我有一个table

id, turnover, qty

我想查询

select sum turnover, sum qty, (sum turnover) div (sum qty) by id from Table

然而,除法的结果值似乎是一个整数并显示为 0(因为单价比 1 小很多)。我试图将结果转换为浮点数,但这无济于事

select sum turnover, sum qty, `float$(`float$(sum turnover) div `float$(sum qty)) by id from Table.

如何在 return 中获得浮动? 另外,作为附带问题。我如何命名该列(相当于 sql select sum(x) as my_column_name ...)

这是 div 的预期输出,您应该使用 % 到 divide 数字 - 始终 returns 浮点数。

q)200 div 8.5
22
q)200%8.5
23.52941
q)

参考这里; Div: http://code.kx.com/q/ref/arith-integer/#div %: http://code.kx.com/q/ref/arith-float/#divide

*编辑

抱歉 - 忘记参考您问题的其余部分。在您的示例中,您正在计算总营业额和总数量两次 - 如果您处理大量记录,您将希望避免这种情况。

这个怎么样;

    q)show trade:([] id:(`$"A",'string[til 10]);turnover:10?til 10; qty:10?100+til 200)
    id turnover qty
    ---------------
    A0 4        152
    A1 4        238
    A2 2        298
    A3 2        268
    A4 7        246
    A5 2        252
    A6 0        279
    A7 5        286
    A8 7        245
    A9 5        191
    q)update toverq:sumT%sumQ from select sumT:sum turnover,sumQ:sum qty by id from trade
    id| sumT sumQ toverq     
    --| ---------------------
    A0| 4    152  0.02631579 
    A1| 4    238  0.01680672 
    A2| 2    298  0.006711409
    A3| 2    268  0.007462687
    A4| 7    246  0.02845528 
    A5| 2    252  0.007936508
    A6| 0    279  0          
    A7| 5    286  0.01748252 
    A8| 7    245  0.02857143 
    A9| 5    191  0.02617801