6.23 分组子集:在子集中跨行运算

 

根据表中字段分组,在各个分组中跨行计算。
在用户消费表中,计算每位用户最后一次消费与前一次的差额。
部分数据如下:

imagepng

脚本:

A
1 =db.query@x(“SELECT * FROM USERPAY”)
2 =A1.group@u(USERID)
3 =A2.(~.top(-2;PAYTIME))
4 =A3.new(~.USERID,if(~.count()<2,0,(~(1).PAYAMOUNT-~(2).PAYAMOUNT)):BALANCE)

A2 按用户分组,不需要排序
A3 将每组按消费时间排序并取最后两条
A4 算出最后两次的差额

运行结果:

imagepng