从Dima
Kudosh的答案中并基于https://stackoverflow.com/a/5700744/2240489,我必须执行以下操作:我
PARTITIONBY在sql中删除了对的引用,并替换为
ORDER BY结果。
AModel.objects.annotate( cumsum=Func( Sum('a_number'), template='%(expressions)s OVER (ORDER BY %(order_by)s)', order_by="id" ) ).values('id', 'cumsum').order_by('id', 'cumsum')这给出了以下sql:
SELECt "amodel"."id",SUM("amodel"."a_number") OVER (ORDER BY id) AS "cumsum" FROM "amodel" GROUP BY "amodel"."id" ORDER BY "amodel"."id" ASC, "cumsum" ASCDima Kudosh的答案不是对结果求和,但以上结果可以。



