5

我想把这个查询从 SQL 放到 Django:

"select date_format(date, '%Y-%m') as month, sum(quantity) as hours from hourentries group by date_format(date, '%Y-%m') order by date;"

导致问题的部分是在聚合时按月分组。我试过这个(这似乎合乎逻辑),但没有奏效:

HourEntries.objects.order_by("date").values("date__month").aggregate(Sum("quantity"))
4

2 回答 2

2

aggregate只能产生一个聚合值。

您可以通过以下查询获得当月的总小时数。

from datetime import datetime
this_month = datetime.now().month
HourEntries.objects.filter(date__month=this_month).aggregate(Sum("quantity"))

因此,要获取 HourEntry 的所有月份的聚合值,您可以遍历数据库中所有月份的查询集。但最好使用原始 sql。

HourEntries.objects.raw("select date_format(date, '%Y-%m') as month, sum(quantity) as hours from hourentries group by date_format(date, '%Y-%m') order by date;")
于 2010-05-31T12:31:16.387 回答
0

我猜你不能在 using 之后聚合“数量” values("date__month"),因为这只会在 QuerySet 中留下“日期”和“月份”。

于 2010-05-31T12:32:50.687 回答