簡體   English   中英

如何使用注釋匯總所有行並獲得平均值? 詹戈

[英]how to use annotate to sum up all rows and get the avg? django

我正在谷歌上搜索,並且有一種使用Cast的簡單方法,但是我相信那是針對django 2.0 ,我的是django 1.9

我找到了一個帖子,並嘗試了它,但是它實際上對我不起作用。

假設我有一個包含valuemax字段的模型。 我想獲得所有valuemax的總和,然后將它們除以得出平均值。 我所做的只是獲得一行並返回該行的平均值,有人可以讓我知道我在這里做錯了什么嗎?

model_calcuation = Model.objects.filter().annotate(
    sum_score=Sum('value', output_field=FloatField()),
    sum_max=Sum('max', output_field=FloatField())
).annotate(
    avg=F('sum_score') / F('sum_max')
)

預先感謝您的任何幫助

如果我正確理解了您的問題,那么您正在尋找aggregate()操作。

from django.db.models import F, Sum

model_calcuation = Model.objects.aggregate(result=Sum(F('value')) / Sum(F('max')))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM