我的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
但我无法弄清楚如何使用aggregate
和annotate
方法。文档中的所有示例都显示了在对要分组的同一变量进行平均时如何使用这些方法。
答案 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')
部分基本上意味着“分组”。