django数据查询之聚合查询和分组查询,分组查询

作者: 网络编程  发布:2019-09-24

<1> aggregate(*args,**kwargs):

聚焦查询

aggregate(args,*kwargs):

由此对QuerySet进行测算,再次来到多个聚合值的字典,aggregate()中每贰个参数都钦命三个带有在字典中的重返值,即在查询集上生成聚合。

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

   price1 = models.Book.objects.all().aggregate(Avg("price"))
   price2 = models.Book.objects.all().aggregate(Max("price"))
   price3 = models.Book.objects.all().aggregate(Sum("price"))
   price4 = models.Book.objects.all().aggregate(Min("price"))
   print(price1,price2,price3,price4)

经过对QuerySet实行总计,再次来到二个聚合值的字典。aggregate()中每多个参数都钦点叁个包罗在字典中的再次来到值。即在查询集上生成聚合。

分组查询

annotate(args,*kwargs):

能够透过总结查询结果中每一个目的所涉嫌的对象集结,进而得出总计算值(也得以是平均值或总和),即为查询集的各个生成聚合。

models.Book.objects.values("author__name").annotate(Sum("price"))
 1 from django.db.models import Avg,Min,Sum,Max 2  3 从整个查询集生成统计值。比如,你想要计算所有在售书的平均价钱。Django的查询语法提供了一种方式描述所有 4 图书的集合。 5  6 >>> Book.objects.all().aggregate(Avg('price')) 7 {'price__avg': 34.35} 8  9 aggregate()子句的参数描述了我们想要计算的聚合值,在这个例子中,是Book模型中price字段的平均值10 11 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的12 标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定13 一个名称,可以向聚合子句提供它:14 >>> Book.objects.aggregate(average_price=Avg('price'))15 {'average_price': 34.35}16 17 18 如果你也想知道所有图书价格的最大值和最小值,可以这样查询:19 >>> Book.objects.aggregate(Avg('price'), Max('price'), Min('price'))20 {'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}

<2> annotate(*args,**kwargs):

能够经过测算查询结果中每八个指标所涉及的目的集结,进而得出总结值(也足以是平均值或总和),即为查询集的每一种生成聚合

图片 1

参照来源:

本文由王中王开奖结果发布于网络编程,转载请注明出处:django数据查询之聚合查询和分组查询,分组查询

关键词:

上一篇:没有了
下一篇:没有了