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

aggregate1 つの集計値のみを生成できます。

次のクエリで、当月の総時間数を取得できます。

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

を使用した後、「数量」で集計することはできないと思いますvalues("date__month")。これにより、QuerySet に「日付」と「月」しか残らないためです。

于 2010-05-31T12:32:50.687 に答える