Django分表操作及FQ方法

聚合

aggregate(*args, **kwargs)

# 计算所有图书的平均价格
 from django.db.models import Avg
 Book.objects.all().aggregate(Avg('price'))
#{'price__avg': 34.35}

aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。

Book.objects.aggregate(average_price=Avg('price'))
#{'average_price': 34.35}

如果你希望生成不止一个聚合,你可以向aggregate()子句中添加另一个参数。所以,如果你也想知道所有图书价格的最大值和最小值,可以这样查询:

from django.db.models import Avg, Max, Min
Book.objects.aggregate(Avg('price'), Max('price'), Min('price'))
#{'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}
  # 查询所有书籍的平均价格
    from django.db.models import Avg,Count,Max,Min
    ret=Book.objects.all().aggregate(Avg('price'))
    # {'price__avg': 202.896}
    # 可以改名字
    ret=Book.objects.all().aggregate(avg_price=Avg('price'))
    # 统计平均价格和最大价格
    ret=Book.objects.all().aggregate(avg_price=Avg('price'),max_price=Max('price'))
    # 统计最小价格
    ret = Book.objects.all().aggregate(avg_price=Avg('price'), min_price=Min('price'))
    # 统计个数和平均价格
    ret = Book.objects.all().aggregate(avg_price=Avg('price'), max_price=Max('price'),count=Count('price'))
    ret = Book.objects.all().aggregate(avg_price=Avg('price'), max_price=Max('price'),count=Count('nid'))
    print(ret)
案例
 
  
 
 

猜你喜欢

转载自www.cnblogs.com/wuzhengzheng/p/10274952.html
FQ