我有一个包含以下值的表:
用户 | 金额 | 日期 |
---|---|---|
John | 10 | 2017-07-01 |
John | 20 | 019-07-01|
John | 30 | 2020-09-01 |
John | 40 | 2021-11-01 |
Dan | -20 | >td style="text-align:center;">2019-02-01|
Dan | -30 | 2020-04-01 |
Dan | -40 | 2021-06-01 |
您可以将Window
函数与user
上的分区一起使用,以按日期排序,为每个用户运行累计总和:
detail = Financial.objects.filter(**date_detail).annotate(
running_amount=Window(
expression=Sum('amount'),
partition_by=[F('user')],
order_by=F('date').asc(),
)
)