我的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
方法。文档中的所有示例都展示了在对分组的同一变量进行平均时如何使用这些方法。
最佳答案
您可以使用 Django aggregation framework :
from django.db.models import Max, Min, Avg
MyModel.objects.values('a').annotate(Min('b'), Max('b'), Avg('b'))
values('a')
此处的部分基本上是指“按 a 分组”。
关于django - 如何在 Django QuerySet 中按查询进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733633/