如何在Django QuerySet中进行Group By Query?

时间:2015-02-26 02:50:52

标签: django django-models django-queryset

我的Django模型:

class MyModel(models.Model):
    a = IntegerField()
    b = IntegerField()

我想编写一个回答以下问题的查询集:“对于a的每个不同值,b的最小值,最大值和平均值是多少?”

我该怎么做?

SQL看起来像这样:

SELECT a, min(b), max(b), avg(b) FROM MyModel group by a

但我无法弄清楚如何使用aggregateannotate方法。文档中的所有示例都显示了在对要分组的同一变量进行平均时如何使用这些方法。

1 个答案:

答案 0 :(得分:11)

您可以使用Django aggregation framework

from django.db.models import Max, Min, Avg

MyModel.objects.values('a').annotate(Min('b'), Max('b'), Avg('b'))

这里的values('a')部分基本上意味着“分组”。